PyQt重启shell

时间:2012-06-08 13:04:23

标签: python pyqt4 python-idle

如果我正在尝试在IDLE shell中创建窗口或提示文件对话框,则不会打开任何内容并重新启动shell。这是某种错误吗?我找不到任何关于它的东西。我是PyQt(和一般的Python)的新手,但是能够让教程正常工作。最后一天左右,如果我打开IDLE并导入PyQt4,QtGui等,然后运行简单的QFileDialog.getOpenFileName,shell就会重新启动。有任何想法吗?

1 个答案:

答案 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