1

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

4

1 回答 1

1

QApplication在使用 PyQt 中的其他任何东西之前,您需要有一个。尝试重新阅读您遵循的一些教程,或者多做一些。以这个为例。

在上述教程的第一个代码示例中,请特别注意这些行(为方便起见,我已包含教程中的注释):

app = QtGui.QApplication(sys.argv)

每个 PyQt4 应用程序都必须创建一个应用程序对象。应用程序对象位于 QtGui 模块中。sys.argv 参数是来自命令行的参数列表。Python 脚本可以从 shell 运行。这是一种方式,我们可以控制脚本的启动。

sys.exit(app.exec_())

最后,我们进入应用程序的主循环。事件处理从这一点开始。主循环从窗口系统接收事件并将它们分派给应用程序小部件。如果我们调用 exit() 方法或主小部件被销毁,则主循环结束。sys.exit() 方法确保干净的退出。将通知环境,应用程序如何结束。

exec_() 方法有一个下划线。这是因为 exec 是 Python 关键字。因此, exec_() 被使用。

看来你可能已经忘记了这些。或者您可能还没有意识到这意味着您通常不能在交互式 shell 中将 PyQt 与正在运行的事件循环一起使用。但是,有一个技巧,请参见此处

于 2012-06-08T16:18:59.590 回答