Python 3.x QWizard在QMdiArea中表现怪异
我有一个QWizard,它是QMdiArea的子窗口。发生了一些奇怪的事情,但我认为它们都是相关的,所以我将描述最简单的。在具有Aero主题的Windows下,以下代码的行为很奇怪: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
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()
),但在特定情况下失败了,或者这是一个错误。我会考虑你的建议,谢谢。