我刚从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和他们似乎都很重要)
答案 0 :(得分:46)
假设一切都安装正确,您需要稍微调整导入,从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。