Python 强制Qt/PyQt/PySide QTabWidget调整为活动选项卡

Python 强制Qt/PyQt/PySide QTabWidget调整为活动选项卡,python,qt,pyqt,pyside,Python,Qt,Pyqt,Pyside,我有一个QTabWidget可以正常工作,只是它没有按照我的预期重新调整大小 小部件中有两个选项卡。每个都有一个QVBoxLayout,其中包含小部件。VBox也按预期工作 问题是第一个选项卡的布局中的小部件比第二个选项卡中的多。当查看第一个选项卡时,选项卡的大小会适当地包含其中的小部件。但是,在查看第二个选项卡时,选项卡小部件保持与第一个选项卡相同的大小,而不是根据可见小部件重新调整大小 这是预期的行为吗?如果是这样,什么是好的解决方法?Id希望选项卡小部件始终缩放到当前活动的小部件 编辑:

我有一个QTabWidget可以正常工作,只是它没有按照我的预期重新调整大小

小部件中有两个选项卡。每个都有一个QVBoxLayout,其中包含小部件。VBox也按预期工作

问题是第一个选项卡的布局中的小部件比第二个选项卡中的多。当查看第一个选项卡时,选项卡的大小会适当地包含其中的小部件。但是,在查看第二个选项卡时,选项卡小部件保持与第一个选项卡相同的大小,而不是根据可见小部件重新调整大小

这是预期的行为吗?如果是这样,什么是好的解决方法?Id希望选项卡小部件始终缩放到当前活动的小部件

编辑: 这是一个问题的例子。所需的行为是将选项卡B缩小到其适当的大小,这可以通过注释下面的行看到

#!/bin/python
import sys
from PySide import QtGui, QtCore

class TabExample(QtGui.QWidget):
    def __init__(self):
        super(TabExample, self).__init__()
        self.initUI()

    def initUI(self):
        self.vbox_main = QtGui.QVBoxLayout()

        self.table_blank = QtGui.QTableWidget(10, 4)

        self.tabw = QtGui.QTabWidget()
        self.tab_A = QtGui.QWidget()
        self.vbox_A = QtGui.QVBoxLayout(self.tab_A)

        for i in range(20):
            lab = QtGui.QLabel('label %d' %i)
            self.vbox_A.addWidget(lab)

        self.tab_B = QtGui.QWidget()
        self.vbox_B = QtGui.QVBoxLayout(self.tab_B)

        for i in range(5):
            lab = QtGui.QLabel('labelB %d'%i)
            self.vbox_B.addWidget(lab)

        #COMMENT OUT NEXT LINE TO SEE DESIRED SIZE OF TAB B
        self.tabw.addTab(self.tab_A, 'Tab A')

        self.tabw.addTab(self.tab_B, 'Tab B')

        self.vbox_main.addWidget(self.table_blank, 1)
        self.vbox_main.addWidget(self.tabw)

        self.setLayout(self.vbox_main)
        self.setGeometry(0,0, 400, 600)
        self.move(QtGui.QDesktopWidget().availableGeometry().center() - self.frameGeometry().center())
        self.show()


def main():
    app = QtGui.QApplication(sys.argv)
    tabExample = TabExample()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

这应该会奏效;根据哪个选项卡处于活动状态,更改大小策略

def __init__(self):
    super(Widget, self).__init__()
    self.setupUi(self)
    self.tabWidget_2.currentChanged.connect(self.updateSizes)

def updateSizes(self):
    for i in range(self.tabWidget_2.count()):
        self.tabWidget_2.widget(i).setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)

    current = self.tabWidget_2.currentWidget()
    current.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)

两个选项卡都有自己的布局。您似乎没有正确设置第二个选项卡的布局。请发布相关代码,可能还包括一些图片来说明您的问题。QTabWidget(默认情况下)应该足够大,可以显示其任何选项卡,但如果当前选项卡可以容纳更少的空间,则不会收缩。如果是这样的话,您可以在较小选项卡的布局中添加一个间隔符,以使其内容保持合理的大小。谢谢你的帮助!我应该在哪里添加垫片?