PyQt6设置QMessageBox默认图标报AttributeError如何解决
报错原因
PyQt6调整了枚举类型的访问规则,PyQt5版本支持的类名.枚举值直接调用写法已被废弃,所有枚举值统一归属到类下对应的内部枚举类中,代码里写的QMessageBox.Information不存在对应属性,因此抛出AttributeError。
修复方案
二选一即可:
- 保留原有实例化QMessageBox的代码逻辑,仅修正图标枚举的访问路径,其余代码无需改动:
def show_pop(self): msg = QMessageBox() msg.setIcon(QMessageBox.Icon.Information) msg.setWindowTitle('mb demo') msg.setText('You Pressed Button') msg.exec()
- 直接调用QMessageBox的小写开头静态方法,无需手动实例化对象、逐个配置属性,静态方法会自动匹配对应类型的内置图标,代码更简洁:
def show_pop(self): # 参数顺序:父窗口对象、窗口标题、提示文本 QMessageBox.information(self, 'mb demo', 'You Pressed Button')
其余内置图标调用规则一致:警告图标对应枚举
QMessageBox.Icon.Warning、错误图标对应QMessageBox.Icon.Critical、询问图标对应QMessageBox.Icon.Question;如果用静态方法,分别对应warning()、critical()、question()方法。
内容的提问来源于stack exchange,提问作者Pourixa
相关产品推荐
相关产品推荐

