一尘不染

QWidget :: setLayout:尝试在已经有布局的MainWindow“”上设置QLayout“”

python

我正在PyQt4中创建一个应用程序,到目前为止,这是我的代码:

import sys
from PyQt4 import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__()
        self.initUi()

    def initUi(self):
        self.setWindowTitle('Main Menu')
        self.setFixedSize(1200, 625)
        self.firstWidgets()
        self.show()

    def firstWidgets(self):
        self.vbox1 = QtGui.QVBoxLayout()
        self.task1 = QtGui.QLabel('Check 1', self)
        self.task1CB = QtGui.QCheckBox(self)
        self.hbox1 = QtGui.QHBoxLayout()
        self.hbox1.addWidget(self.task1)
        self.hbox1.addWidget(self.task1CB)
        self.vbox1.addLayout(self.hbox1)

        self.setLayout(self.vbox1)


def main():
    application = QtGui.QApplication(sys.argv)
    gui = MainWindow()
    sys.exit(application.exec_())

if __name__=='__main__':
    main()

我的问题在MainWindow.firstWidgets()。我尝试设置布局,但是即使这是我第一次使用.setLayout该表格,也会出现错误,这使我感到困惑。

QWidget :: setLayout:尝试在MainWindow“”上设置QLayout“”,该窗口已经具有布局


阅读 216

收藏
2020-12-20

共1个答案

一尘不染

您不能QLayout直接在上设置QMainWindow。您需要创建一个QWidget并将其设置为上的 中央窗口小部件
QMainWindow然后将其分配给该 窗口小部件QLayout

wid = QtGui.QWidget(self)
self.setCentralWidget(wid)
layout = QtGui.QVBoxLayout()
wid.setLayout(layout)
2020-12-20