QApplication实例导致Python终端运行缓慢
我在使用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