PyQt5和QtGui模块未找到。

11

为什么QtGui与PyQt5捆绑在一起?

我正在使用Mark Summerfield的《Rapid GUI Programming》书籍。显然,这本书是以Qt4为基础编写的,但我已经被推荐使用Qt5和PyQt5。我想运行第4章中的第一个示例代码。该代码以以下导入语句开头:

import sys
import time
from PyQt5.QtCore import *
from PyQt5.QtGui import *

编译器的回复:

Traceback (most recent call last):
  File "wakeUp.py", line 4, in <module>
    from PyQt5.QtGui import *
ImportError: No module named 'PyQt5.QtGui'
注意,PyQt5.QtCore导入语句不会产生错误。 从终端开始,
$ echo $PYTHONPATH
:/usr/lib/python3.3/site-packages

有没有人遇到过QtGui的导入错误?

我可以从交互式会话中看到:

>>> import PyQt5.Qt
>>> import PyQt5.QtDBus
>>> import PyQt5.QtNetwork
>>> import PyQt5.QtXmlPatterns

但是我没有QtWidgets、QtGui、QtWebkit、QtDesigner以及其他一些模块。

此外,如果有帮助的话,/usr/lib/python3.3/site-packages/PyQt5目录下的内容如下:

__init__.py  QtCore.so  QtDBus.so  QtNetwork.so  Qt.so  QtXmlPatterns.so  uic

这些模块与我可以导入的模块相同。其他模块(如QtWidgets、QtGui等)是否也应在此处?

我正在使用Ubuntu 13.04和Python 3.3。


也许你应该使用PyQt5.QtWidgets而不是QtGui?请参考这个例子 - Pavel Strakhov
是的,我看到了。不幸的是,QtWidgets也出现了相同的导入错误。 - ADB
如果文档中的示例无法运行,则说明PyQt安装不正确或不完整。请提供有关您的操作系统和PyQt安装的一些信息。 - Pavel Strakhov
6个回答

7

当我第一次尝试使用pyqt4、pyqt5和pycharm IDE时,我遇到了许多导入问题(尽管在IDLE中运行没有问题)。最终,在经历了很多折腾、卸载和重新安装(包括依赖项)之后,导入问题解决了。

你是不是使用了从pyqt网站下载的安装程序来安装pyqt5?必须这样做。 在Windows中,Qt Designer可以在开始菜单中找到。 在遵循PyQt4教程时,我尝试使用以下PyQt5导入语句,取得了成功...

from PyQt4 import QtCore, QtGui #in the pyqt4 tutorials
from PyQt5 import QtCore, QtGui, QtWidgets #works for pyqt5

我自己对此也很陌生,但在pyqt4中,QtWidget是QtGui的一部分(QtGui.QtWidget),在pyqt5中,它被单独导入为QtWidgets。只需稍作修改即可使pyqt4教程在pyqt5中运行。
我个人回到了pYqt4,以利用pyqtgraph。
请查看我的pyqt4帖子这里,为您介绍如何使用Qt Designer。

你是否使用pyqt网站上的安装程序安装了pyqt5?你必须这样做。但是,如果这个答案曾经是正确的,现在肯定已经过时了。安装pyqt5的最佳方法是使用pip安装到虚拟环境中,这将获得一个二进制轮子,或者使用Anaconda的包管理器。Qt自己的安装程序不会完美地限制在本地环境中。 - Arthur Tacca

4

使用以下命令配置pyqt:

python[3] configure.py --qmake=[path to Qt5.x]/bin/qmake --verbose

无论一个qt模块是否能够成功编译取决于configure.py的检查。 查看终端输出,您会发现为什么QtGui.QtWidgets没有被正确安装。

太好了!我没有安装GL库,因此QtGui无法构建。通过sudo apt install libgl-dev命令,问题得到解决 - 在此之后,configure正确地设置了一切。 - DenverCoder9

4
当我运行PyQt5配置脚本时出现问题。正确的选项应该是这样的:
> python3 configure.py --qmake [path to Qt5.x]/bin/qmake

我提供了bin的路径,但没有明确指向qmake。真是让人费解!运行这样的configure脚本之后,我能够导入所有PyQt5模块。

在使用“pip install PyQt5”在虚拟环境中安装时,没有qmake文件夹或文件。我可以找到\venv\Lib\site-packages\PyQt5\Qt\bin,但它里面全是dll文件,没有qmake。那么从python3.7的wheels安装不是正确的安装方式吗? - Echeban

0

同样的问题,Python运行.py文件没有问题,但在所有IDE中:Visual Studio Code/PyCharm中会显示语法错误。

最终我通过设置环境变量PYTHONPATH到Python的site-packages路径来解决它,例如:

PYTHONPATH=D:\Anaconda3\Lib\site-packages

0
今天我遇到了这个问题,我解决方法如下: 不要像这样导入:
from PyQt5.QtGui import QIcon

以这种方式导入,它会很好地工作:

from PyQt5 import QtGui
from PyQt5.QtGui import QIcon

-3

PyQt5 中,QtGuiQtCore 都位于 QtWidgets 中。

你应该像这样导入:

from PyQt5.QtWidgets import QtGui, QtCore

而不是

from PyQt5.QtCore import *
from PyQt5.QtGui import *

希望这能有所帮助。 :)

1
嗨,在PyQt5中,你的以下代码 from PyQt5.QtWidgets import QtGui, QtCore 返回这个错误 ImportError: cannot import name QtGui。 - Rhys
1
@Rhys 请检查您是否正在使用PyQt5或PyQt4。此解决方案仅适用于PyQt5。 - Surinder ツ
PyQt5.5.1和Qt5.6:from PyQt5.QtWidgets import QtGui,QtCore => *ImportError: 无法导入名称'QtGui'*。这个可以工作:from PyQt5.QtWidgets import QWidgetimport PyQt5.QtCore as QtCore。如果你确实需要QtGui模块:import PyQt5.QtGui as QtGui - 7stud

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接