Python 3.x QWizard在QMdiArea中表现怪异

Python 3.x QWizard在QMdiArea中表现怪异,python-3.x,pyqt4,Python 3.x,Pyqt4,我有一个QWizard,它是QMdiArea的子窗口。发生了一些奇怪的事情,但我认为它们都是相关的,所以我将描述最简单的。在具有Aero主题的Windows下,以下代码的行为很奇怪: from PyQt4 import QtGui def createIntroPage(): page = QtGui.QWizardPage() page.setTitle("Introduction") label = QtGui.QLabel("This wizard will he

我有一个QWizard,它是QMdiArea的子窗口。发生了一些奇怪的事情,但我认为它们都是相关的,所以我将描述最简单的。在具有Aero主题的Windows下,以下代码的行为很奇怪:

from PyQt4 import QtGui

def createIntroPage():
    page = QtGui.QWizardPage()
    page.setTitle("Introduction")
    label = QtGui.QLabel("This wizard will help you register your copy of "
    "Super Product Two.")
    label.setWordWrap(True)
    layout = QtGui.QVBoxLayout()
    layout.addWidget(label)
    page.setLayout(layout)
    return page

def createRegistrationPage():
    page = QtGui.QWizardPage()
    page.setTitle("Registration")
    page.setSubTitle("Please fill both fields.")
    nameLabel = QtGui.QLabel("Name:")
    nameLineEdit = QtGui.QLineEdit()
    emailLabel = QtGui.QLabel("Email address:")
    emailLineEdit = QtGui.QLineEdit()
    layout = QtGui.QGridLayout()
    layout.addWidget(nameLabel, 0, 0)
    layout.addWidget(nameLineEdit, 0, 1)
    layout.addWidget(emailLabel, 1, 0)
    layout.addWidget(emailLineEdit, 1, 1)
    page.setLayout(layout)
    return page

def createConclusionPage():
    page = QtGui.QWizardPage()
    page.setTitle("Conclusion")
    label = QtGui.QLabel("You are now successfully registered. Have a nice day!")
    label.setWordWrap(True)
    layout = QtGui.QVBoxLayout()
    layout.addWidget(label)
    page.setLayout(layout)
    return page

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    main = QtGui.QMainWindow()
    main.setWindowTitle('Test MDI Application')
    mdiArea = QtGui.QMdiArea(main)
    main.setCentralWidget(mdiArea)

    wizard = QtGui.QWizard(main)
    wizard.addPage(createIntroPage())
    wizard.addPage(createRegistrationPage())
    wizard.addPage(createConclusionPage())
    wizard.setWindowTitle("Trivial Wizard")

    mdiArea.addSubWindow(wizard)
    wizard.show()
    main.show()
    sys.exit(wizard.exec_())

请注意,所有按钮都丢失了。调整大小后,将显示按钮,但无法单击。它们只能通过对其进行选项卡并使用空格激活来激活


我是做错了什么,还是这是一个PyQT4问题?

似乎在Linux上对我来说工作正常。不知道这是否会有帮助,但最后的
向导.exec_()
看起来很奇怪-当然
app.exec_()
会更有意义…正如我在帖子中所说,它在Aero(Windows)上失败了,同样,你对app.exec_()的看法是正确的,这只是一个测试,在另一个平台上测试不会有什么不同,我排除了您的代码或PyQt4(这是您提出的实际问题)有任何根本性错误的可能性。但实际上,如果您怀疑这是Windows上Aero主题特有的问题,那么您的第一个调用端口就不应该是这样。在几分钟的网络搜索中,我发现,这似乎是相关的。(您也可以尝试使用)。我不确定我是否做错了一些通常不会产生任何后果的事情(比如调用
wizard.exec()
而不是
app.exec()
),但在特定情况下失败了,或者这是一个错误。我会考虑你的建议,谢谢。