我正在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该表格,也会出现错误,这使我感到困惑。
MainWindow.firstWidgets()
.setLayout
QWidget :: setLayout:尝试在MainWindow“”上设置QLayout“”,该窗口已经具有布局
您不能QLayout直接在上设置QMainWindow。您需要创建一个QWidget并将其设置为上的 中央窗口小部件 ,QMainWindow然后将其分配给该 窗口小部件QLayout。
QLayout
QMainWindow
QWidget
wid = QtGui.QWidget(self) self.setCentralWidget(wid) layout = QtGui.QVBoxLayout() wid.setLayout(layout)