导入错误:无法导入名称 pyqtSignal?

Shr*_*rma 3 python pyqt4 python-2.7 qtpy

问题背景:这是我之前的 PyQt 项目,我正在研究并尝试启动 GUI。我已经使用 Python 2.7 设置了一个 Anaconda 环境并使用了 PyQt4。错误是:-

File "gui/gui.py", line 26, in <module> from qtpy.QtCore import (Qt, QFileSystemWatcher, QSettings, pyqtSignal) ImportError: cannot import name pyqtSignal

代码 :-

enter #import qt
from qtpy import QtCore, QtWidgets, QtGui, PYQT4 #changed from PYQT5
from qtpy.QtCore import (Qt, QFileSystemWatcher, QSettings, pyqtSignal)
Run Code Online (Sandbox Code Playgroud)

即使在尽我所能尝试设置环境和其他方面之后,我也无法确定为什么仍然会弹出此错误。在 Mac 上尝试过,即使在 Ubuntu 上也会出现类似的错误。有谁知道如何解决这个问题?

iva*_*eev 6

您正在使用qtpy而不是PyQt4直接使用。根据Don't delete QtCore.{pyqtSignal,pyqtSlot,pyqtProperty} · Issue #76 · spyder-ide/qtpy · GitHub,他们故意放弃了PyQt特定名称pyqtSignal,而是在导入时将它们重命名为通用名称,例如Signal统一。他们评论说这些名称遵循Qt5的命名方案。

所以你应该只是

from qtpy.QtCore import Qt, QFileSystemWatcher, QSettings, Signal
Run Code Online (Sandbox Code Playgroud)

并将 all 重命名pyqtSignalSignal代码中的其他地方。