40

我刚刚从 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 更改 sys.path:ImportError: cannot import name QtGui work around 但它仍然给我相同的

ImportError: cannot import name QtGui

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

4

1 回答 1

62

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

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

示例代码需要更改为:

from PyQt5 import QtCore, QtGui, QtWidgets

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

有关从 PyQt4 移植到 PyQt5 的更多详细信息,请参阅:PyQt4 和 PyQt5 之间的差异

于 2013-12-23T22:31:05.730 回答