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