如果我试图在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

10-05 20:47
查看更多