【问题标题】:Python PyQt4 open from QDialog new QWidget windowPython PyQt4 从 QDialog 新 QWidget 窗口打开
【发布时间】:2015-03-31 09:21:22
【问题描述】:

通过在我的 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) 它有效!

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

【问题讨论】:

    标签: python window pyqt qwidget qdialog


    【解决方案1】:

    当你实例化MainWindow 时,你传入了一个父级。 Qwidget 仅在您不指定父窗口时创建一个新窗口。

    这当然是故意的。如果QWidgets 与父母一起显示在新窗口中,那么您将永远无法构建 GUI。想象一下,每个小部件都在它自己的窗口中!

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

    【讨论】:

      猜你喜欢
      • 2017-07-29
      • 1970-01-01
      • 2012-02-21
      • 2023-04-03
      • 1970-01-01
      • 2019-01-01
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多