如何使QGridLayout的最下面一行自动填充PyQt5中的窗口大小?

2024-09-30 05:19:05 发布

您现在位置:Python中文网/ 问答频道 /正文

当窗口改变其大小时,我希望在该行的底部,这是一个包含3个小部件的QSplitter,用于展开和填充剩余的窗口,而第一行中的小部件保持原来的y位置。怎么做?在

如果QSplitter中的三个小部件能够保持它们以前的比例,那就更好了。在

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        self.MainWindow=MainWindow
        self.MainWindow.setObjectName("self.MainWindow")

        self.MainWindow.resize(850, 800)
        self.centralwidget = QtWidgets.QWidget(self.MainWindow)
        self.MainWindow.setCentralWidget(self.centralwidget)

        self.vlayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setContentsMargins(0, 0, 0, 0)

        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setText("LABEL")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)        
        self.gridLayout.addWidget(self.label,0,0,1,1)
        self.gridLayout.addWidget(self.comboBox,0,1,1,9)

        """table """
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)

        """tab1"""
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setMinimumHeight(50)

        """tab2"""
        self.tabWidget_2 = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget_2.setMinimumHeight(50)

        """splitter window"""     
        splitter = QtWidgets.QSplitter(QtCore.Qt.Vertical)
        splitter.addWidget(self.tableWidget)
        splitter.addWidget(self.tabWidget)
        splitter.addWidget(self.tabWidget_2)
        splitter.setSizes([232,225,225])
        self.gridLayout.addWidget(splitter,3,0,5,10)
        self.gridLayout.setRowMinimumHeight(3,690)
        self.vlayout.addLayout(self.gridLayout)
        spacerItem = QtWidgets.QSpacerItem(20, 245, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        self.vlayout.addItem(spacerItem)

        QtCore.QMetaObject.connectSlotsByName(MainWindow)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

enter image description here

enter image description here

我想把QSplitter扩展到窗口的底部。在


Tags: importself部件syslabelsplitterqtcoreqtwidgets

热门问题