Python PyQt4从QDialog新的QWidget窗口打开



通过在QDialog窗口中按下QPushButton,我想打开一个新的QWidget窗口。我的代码:

from PyQt4 import QtGui
import sys

class MainWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle("Main Window")

class FirstWindow(QtGui.QDialog):
    def __init__(self, parent=None):
        super(FirstWindow, self).__init__(parent)
        self.createWindow()
    def createWindow(self):
        btn = QtGui.QPushButton('Open New Window', self)
        btn.move(10, 10)
        self.openNewWindow = MainWindow(self)
        btn.clicked.connect(self.openMainWin)
        self.setGeometry(250,250, 150,50)
        self.setWindowTitle("First Window")
        self.show()
    def openMainWin(self):
        self.openNewWindow.show()

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    firstwin = FirstWindow()
    sys.exit(app.exec_())

当我运行代码时,按下按钮不会发生任何事情。

但是当我从class MainWindow(QtGui.QWidget)class MainWindow(QtGui.QDialog)class MainWindow(QtGui.QMainWindow)它有效!

我做错了什么?!请协助我。

当实例化MainWindow时,传递一个父级。Qwidget仅在未指定父窗口的情况下生成新窗口。

这当然是经过深思熟虑的。如果带有父级的QWidgets显示在新窗口中,那么您永远无法构建GUI。想象一下,每个小部件都在自己的窗口中!

QMainWindowQDialog被专门设计为都有一个父窗口,并创建一个新窗口。你应该使用它们。

最新更新