我在IDE Spyder中运行时编写了一个可以正常工作的程序,但是当我从命令行启动程序时它无效。问题与QtCore.Signal有关。只需在命令行或IPython中使用几行代码即可重现该问题:
from PyQt4 import QtCore
class SimulationSignal(QtCore.QObject):
sig = QtCore.Signal(str)
后续错误如下:
AttributeError Traceback (most recent call last)
<ipython-input-4-db33219da0dd> in <module>()
1 from PyQt4 import QtCore
----> 2 class SimulationSignal(QtCore.QObject):
3 sig = QtCore.Signal(str)
<ipython-input-4-db33219da0dd> in SimulationSignal()
1 from PyQt4 import QtCore
2 class SimulationSignal(QtCore.QObject):
----> 3 sig = QtCore.Signal(str)
AttributeError: 'module' object has no attribute 'Signal'
如果我删除了QtCore.Signal代码,那么该程序也会从命令行运行。当我在Spyder内部或外部运行时,我检查了Qt版本是否相同。它们如下: (&#39; Qt版本:&#39;,&#39; 4.8.4&#39;) (&#39; SIP版本:&#39;,&#39; 4.14.2&#39;) (&#39; PyQt版本:&#39;,&#39; 4.9.6&#39;)
我有什么想法可以解决这个问题?我想使pyinstaller可分发,但由于这个问题它似乎不起作用。
答案 0 :(得分:0)
使用PyQt4
,you need to use QtCore.pyqtSignal
时,不是QtCore.Signal
。 QtCore.Signal
是使用PySide
时的等效类。我不确定此代码在Spyder中是如何工作的,除非它实际上没有使用PyQt4
。