PyQt4中多个窗口?(Multiple windows in PyQt4?)

2019-09-01 03:27发布

我已经使用PyQt4的刚刚开始。 我也跟着教程( http://zetcode.com/tutorials/pyqt4/ )是让我为难的一件事是这一部分:

def main():
    app = QtGui.QApplication(sys.argv)
    ex = GUI()
    sys.exit(app.exec())

而这样做的原因,我在这里说明一下:

我已经打开四个窗口除了第一主窗口的小程序。 所以,我试图复制我所看到的与主窗口工作,并创建了一个类为每一个新的窗口,并尝试做像上面。 目前,它看起来像这样:

def main2():
    #app = QtGui.QApplication(sys.argv)
    ex2 = Settings()
    sys.exit(app.exec())

正如你可以看到我已经修改了它。 如果我离开了第一线的功能注释掉的程序会崩溃。 我想没有sys.exit(app.exec_()) -第做到但这只会使新窗口关闭毫秒这表明后。 尽管这样,一切都正常运行和工作。 只有在命令窗口,显示错误消息。 我不知道如何解决这个问题,因为我不能删除最后一个行,我dont't知道该怎么替换为“应用程序”。

我知道我可能做新的Windows错误从一开始,但是我不知道如何使这些窗口从以任何其他方式在原窗口打开。 我一直无法得到任何其他的工作,这至少运行和现在的作品。 所以,唯一的问题是在提示错误信息,这将是很好的摆脱他们:)

感谢您的帮助(复杂和容易的)!

忘了提,我做了上课的时间是这样的:

class GUI(QtGui.QMainWindow):
    def __init__(self):
        super(GUI, self).__init__()
        self.initUI()

class Settings(QtGui.QWidget):
    def __init__(self):
        super(Settings, self).__init__()
        ...here goes some more...
        self.initUI2()

我通过调用打开MAIN2设置窗口()

Answer 1:

您必须创建一个和唯一一个在你的程序的QApplication。

请记住,GUI编程是事件驱动的,你首先要声明的小部件,然后运行与主回路app.exec()当用户退出应用程序, app.exec()返回。

该QApplication的目的是处理用户事件,并将其传播到使用Qt的信号代码。 我建议你查一下Qt文档 ,这是非常完整的,即使它靶向C ++程序员。

因此,例如,一种方法来创建两个窗口小部件将是:

def main():
    app = QtGui.QApplication(sys.argv)

    ex = QtGui.QWidget()
    ex.show()
    ex2 = QtGui.QWidget()
    ex2.show()

    sys.exit(app.exec())


文章来源: Multiple windows in PyQt4?
标签: python pyqt4