PyQt5无法导入QtGui

Fal*_*ler 34 python pyqt python-3.x pyqt5

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

当我做:

from PyQt5 import QtGui
Run Code Online (Sandbox Code Playgroud)

我明白了

class MainWindow(QtGui.QMainWindow, UI.MainUI.Ui_MainWindow):
AttributeError: 'module' object has no attribute 'QMainWindow'
Run Code Online (Sandbox Code Playgroud)

所以我试过了

from PyQt5.QtWidgets import QtGui
Run Code Online (Sandbox Code Playgroud)

结果如下:

ImportError: cannot import name QtGui
Run Code Online (Sandbox Code Playgroud)

然后我尝试根据Pyinstaller更改sys.path :ImportError:无法导入名称QtGui工作但它仍然给我相同

ImportError: cannot import name QtGui
Run Code Online (Sandbox Code Playgroud)

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

ekh*_*oro 49

假设一切都安装正确,您需要稍微调整导入从PyQt4到PyQt5的端口.

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

示例代码需要更改为:

from PyQt5 import QtCore, QtGui, QtWidgets

class MainWindow(QtWidgets.QMainWindow, UI.MainUI.Ui_MainWindow):
    ...
Run Code Online (Sandbox Code Playgroud)

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

  • `QApplication`(例如,`app = QtWidgets.QApplication(sys.argv)``app.exec _()`)也已移至QTWidgets. (12认同)
  • 非常感谢,我花了太长时间来解决这个问题。 (3认同)