QApplication实例导致Python终端运行缓慢

5 投票
1 回答
578 浏览
提问于 2025-04-17 13:32

我在使用IPython命令行时,发现当我创建一个QApplication对象后,整个程序变得很慢。比如,就算是刚刚启动,下面这段代码也会让我命令行变得很卡,最后不得不重启它。

from PyQt4 import QtGui
app = QtGui.QApplication([])

一提交这段代码,我的输入就会延迟2到3秒。我的电脑虽然不算特别好,但内存还是够用的,只有这个python命令行受到了影响。我试过用默认的python解释器和ipython解释器,结果都是一样的。有没有什么建议呢?

更新:我还尝试在ipython中运行一个独立的pyqt "Hello World"程序,使用了%run这个命令。当我关闭那个"Hello World"窗口后,控制权又回到ipython时,效果也是一样;命令行变得很慢,我的输入又开始延迟2-3秒。

1 个回答

4

这可能会对你有帮助:

QtCore.pyqtRemoveInputHook()

当第一次导入QtCore模块时,它会安装一个Python输入钩子(也就是设置了Python的PyOS_InputHook变量的值)。这个钩子允许你在应用程序运行时,在解释器提示符下输入命令。这样,你就可以动态创建新的Qt对象,并调用任何现有Qt对象的方法。

不过,这个输入钩子可能会给某些类型的应用程序带来问题,特别是那些通过其他方式提供类似功能的应用程序。这个函数可以移除PyQt安装的输入钩子。

如果需要,可以使用pyqtRestoreInputHook()函数来恢复输入钩子。

http://www.riverbankcomputing.com/static/Docs/PyQt4/html/qtcore.html#pyqtRemoveInputHook

撰写回答