我刚开始使用pyqt4.我遵循了一个教程(http://zetcode.com/tutorials/pyqt4/)令我困惑的一件事是这部分:
def main():
app = QtGui.QApplication(sys.argv)
ex = GUI()
sys.exit(app.exec())
Run Code Online (Sandbox Code Playgroud)
我在这里解释的原因是:
我制作了一个小程序,除了第一个主窗口外,还打开了另外四个窗口.所以我试图复制我看到的主窗口工作,并为每个新窗口创建一个类,并尝试用上面的方法.目前它看起来像这样:
def main2():
#app = QtGui.QApplication(sys.argv)
ex2 = Settings()
sys.exit(app.exec())
Run Code Online (Sandbox Code Playgroud)
如你所见,我修改了它.如果我将函数中的第一行留下未注释,程序将崩溃.我试着没有sys.exit(app.exec_()) - part,但这只会使新窗口在显示后的几毫秒内关闭.这样,一切都运行和工作.仅在命令窗口中显示错误消息.我不知道如何解决这个问题,因为我无法删除最后一行,而且我不知道用什么来代替"app".
我知道我可能从一开始就对新窗口做错了,但我不知道如何以任何其他方式从原始窗口打开这些窗口.我还没有能够得到任何其他工作,这至少现在可以运行.所以唯一的问题是提示中的错误消息,摆脱它们会很好:)
感谢您的帮助(复杂而简单)!
忘了提,我让课程开始像这样:
class GUI(QtGui.QMainWindow):
def __init__(self):
super(GUI, self).__init__()
self.initUI()
Run Code Online (Sandbox Code Playgroud)
和
class Settings(QtGui.QWidget):
def __init__(self):
super(Settings, self).__init__()
...here goes some more...
self.initUI2()
Run Code Online (Sandbox Code Playgroud)
我打电话给main2()打开设置窗口
小智 6
您必须在程序中创建一个且仅一个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())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14346 次 |
| 最近记录: |