如果我正在尝试在IDLE shell中创建窗口或提示文件对话框,则不会打开任何内容并重新启动shell。这是某种错误吗?我找不到任何关于它的东西。我是PyQt(和一般的Python)的新手,但是能够让教程正常工作。最后一天左右,如果我打开IDLE并导入PyQt4,QtGui等,然后运行简单的QFileDialog.getOpenFileName,shell就会重新启动。有任何想法吗?
答案 0 :(得分:1)
在使用PyQt中的任何其他内容之前,您需要拥有QApplication
。尝试重读您所遵循的一些教程,或者再做一些。例如This one。
在上面教程的第一个代码示例中,要特别注意这些行(为方便起见,我已经包含了教程中的注释):
app = QtGui.QApplication(sys.argv)
每个PyQt4应用程序都必须创建一个应用程序对象。该 应用程序对象位于QtGui模块中。 sys.argv 参数是命令行中的参数列表。 Python脚本 可以从shell运行。这是一种方式,我们如何控制启动 我们的剧本。
和
sys.exit(app.exec_())
最后,我们进入应用程序的主循环。事件处理 从这一点开始。主循环从窗口接收事件 系统并将它们分派给应用程序小部件。主循环 如果我们调用exit()方法或主窗口小部件被销毁,则结束。 sys.exit()方法确保干净的退出。环境将是 告知,申请结束了。
exec_()方法有一个下划线。这是因为执行官是一个 Python关键字。因此,改为使用了exec_()。
看来你可能已经忘记了这些。或者你可能没有意识到这意味着你通常不能在交互式shell中使用PyQt和正在运行的事件循环。但是,有一个技巧,请参阅here。