簡體   English   中英

從QDialog新的QWidget窗口中打開Python PyQt4

[英]Python PyQt4 open from QDialog new QWidget window

通過在我的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.QWidget) class MainWindow(QtGui.QDialog)class MainWindow(QtGui.QMainWindow)它將起作用!

我究竟做錯了什么?! 請幫我。

實例化MainWindow您傳入一個父級。 如果您未指定父項,則Qwidget只會創建一個新窗口。

這當然是故意的。 如果帶有父項的QWidgets顯示在新窗口中,則您將永遠無法構建GUI。 想象一下,每個小部件都在自己的窗口中!

QMainWindowQDialog專門設計為都有一個父級,並創建一個新窗口。 您應該使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM