从QDialog窗口打开Python PyQt4新的QWidget窗口
问题描述:
通过在我的QDialog窗口中按下QPushButton,我想打开一个新的QWidget窗口。 我的代码:从QDialog窗口打开Python PyQt4新的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。想象一下,每个小部件都在自己的窗口中!
QMainWindow
和QDialog
是专门设计为既有父母,又创建一个新的窗口。你应该使用它们。