PyQt5调用loadUiType加载UI文件报metaclass conflict错误如何解决
报错原因
PyQt5.uic.loadUiType()方法返回值为**(UI界面类, 基础窗口类)**组成的二元元组,你直接将整个元组作为父类传入类继承逻辑,不符合Python类继承的语法要求,因此触发元类冲突报错。同时代码还存在两处拼写错误。
修正后完整代码
from PyQt5.QtGui import * from PyQt5.QtCore import * import sys from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.uic import loadUiType # 拆分loadUiType返回的两个类 Ui_Class, Base_Class = loadUiType('main.ui') class MainApp(Base_Class, Ui_Class): def __init__(self, parent=None): super().__init__(parent) # 修正拼写:setupUI改为setupUi self.setupUi(self) def main(): app = QApplication(sys.argv) window = MainApp() window.show() # 修正拼写:exex_改为exec_ app.exec_() if __name__ == '__main__': main()
关键修改点
- 拆分
loadUiType返回的二元元组,正确继承对应的UI类和基础窗口类 - 修正
setupUI为PyQt内置的标准方法名setupUi - 修正QApplication启动方法的拼写错误
exex_为exec_
内容的提问来源于stack exchange,提问作者Omar Attia
相关产品推荐
相关产品推荐

