PyQt5 导入 QtGui 失败

Posted

技术标签:

【中文标题】PyQt5 导入 QtGui 失败【英文标题】:PyQt5 failing import of QtGui 【发布时间】:2013-12-23 19:19:36 【问题描述】:

我刚从 PyQt4 迁移到 5,我遇到了 QtGui 的问题。我使用 32 位 Windows 安装程序安装,而不是我自己的构建。

当我这样做时:

from PyQt5 import QtGui

我明白了

class MainWindow(QtGui.QMainWindow, UI.MainUI.Ui_MainWindow):
AttributeError: 'module' object has no attribute 'QMainWindow'

所以我尝试了

from PyQt5.QtWidgets import QtGui

结果:

ImportError: cannot import name QtGui

然后我尝试根据Pyinstaller: ImportError: cannot import name QtGui 解决方法更改 sys.path,但它仍然给我相同的结果

ImportError: cannot import name QtGui

更新: 看起来我实际上确实导入了 QtGui,因为当我进入 IDLE 并尝试它时,它仍然会自动完成 QMovie 和一大堆其他属性。 QMainWindow 有什么理由不在那里吗? (不是,QDialog 也不是,它们似乎很重要)

【问题讨论】:

建议为新手使用 Anaconda 设置您的开发环境。请follow my article一步一步来。 【参考方案1】:

假设一切安装正确,您需要稍微调整导入以从 PyQt4 移植到 PyQt5。

主要的 GUI 元素在 QtWidgets 模块中,而更基本的 GUI 元素在 QtGui 中。有关详细信息,请参阅Qt modules page。

示例代码需要更改为:

from PyQt5 import QtCore, QtGui, QtWidgets

class MainWindow(QtWidgets.QMainWindow, UI.MainUI.Ui_MainWindow):
    ...

有关从 PyQt4 移植到 PyQt5 的更多详细信息,请参阅:Differences Between PyQt4 and PyQt5。

【讨论】:

非常感谢,我花了很长时间才得到这么简单的答案。 QApplication(例如,app = QtWidgets.QApplication(sys.argv) app.exec_())也已移至 QTWidgets。

以上是关于PyQt5 导入 QtGui 失败的主要内容,如果未能解决你的问题,请参考以下文章

pyqt5动态添加控件及导入图片

导入 PyQt5 时 DLL 加载失败

Pyqt5 已安装,但在导入时出现 dll 加载失败错误?

我想在 PyQt5 的 QtableView 中显示一个 csv 文件

从 pyqtgraph.Qt 导入 QtGui 为 *

使用 PyCharm 导入 PyQt4.QtGui 但不导入 QtCore