QtCore.Signal在Spyder中工作,但不是通过命令行或IPython

时间:2014-09-14 20:13:18

标签: python qt

我在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可分发,但由于这个问题它似乎不起作用。

1 个答案:

答案 0 :(得分:0)

使用PyQt4you need to use QtCore.pyqtSignal时,不是QtCore.SignalQtCore.Signal是使用PySide时的等效类。我不确定此代码在Spyder中是如何工作的,除非它实际上没有使用PyQt4