无法使用指定的选项打开gui类窗口

时间:2018-05-09 23:46:36

标签: python python-3.x pyqt pyqt5 qmainwindow

我是python和pyqt的新手。我试图在第一个屏幕后打开一个新窗口。我的第二个窗口打开但没有我指定的选项,标签和按钮。

from PyQt5 import QtWidgets
import sys

class secondwindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(secondwindow, self).__init__()
        self.label1 = QtWidgets.QLabel("Second Window");
        self.button1 = QtWidgets.QPushButton("Click Me");
        hbox = QtWidgets.QHBoxLayout()
        hbox.addWidget(self.label1)
        hbox.addWidget(self.button1)
        self.setLayout(hbox)

class Window(QtWidgets.QWidget):
    def btnclicked(self):
        sender = self.sender()
        if sender.text() == "OK":
            self.secwin.show()

    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
        self.button1 = QtWidgets.QPushButton("OK");
        vbox = QtWidgets.QVBoxLayout()
        vbox.addWidget(self.button1)
        self.setLayout(vbox)

        self.button1.clicked.connect(self.btnclicked)
        self.secwin = secondwindow()
        self.show()

def main():
    app = QtWidgets.QApplication(sys.argv)
    main = Window()
    main.show
    sys.exit(app.exec())

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:0)

QMainWindow是一个特殊的小部件,因为它具有已定义的结构http://doc.qt.io/qt-5/qmainwindow.html#qt-main-window-framework

enter image description here

如图所示,已经存在一个区域,用于放置名为Central Widget的小部件,在其中您必须放置要为其显示的小部件,使用setCentralWidget()

在您的情况下,解决方案是:

class secondwindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(secondwindow, self).__init__()
        central_widget = QtWidgets.QWidget()
        self.label1 = QtWidgets.QLabel("Second Window")
        self.button1 = QtWidgets.QPushButton("Click Me")
        hbox = QtWidgets.QHBoxLayout(central_widget)
        hbox.addWidget(self.label1)
        hbox.addWidget(self.button1)
        self.setCentralWidget(central_widget)