PyQt6中QMessageBox实例化时'title'参数报错求助
PyQt6 QMessageBox实例化'title'关键字参数报错的解决办法
你遇到的问题是因为调用的QMessageBox.__init__重载不匹配:存根文件里标注的那个带title参数的重载,要求第一个参数必须是icon,而你调用时没传icon,实际匹配的是另一个不支持title关键字参数的重载版本,所以触发了TypeError。
正确的写法有两种:
匹配带
icon的重载版本
要么按参数顺序传值,要么在传icon后使用关键字参数:import PyQt6.QtWidgets as Qtw app = Qtw.QApplication([]) # 方式1:按顺序传参 alert_window = Qtw.QMessageBox(Qtw.QMessageBox.Icon.Information, "Bar", "Foo") # 方式2:指定关键字参数(需先传icon) # alert_window = Qtw.QMessageBox(Qtw.QMessageBox.Icon.Information, title="Bar", text="Foo") alert_window.exec()先实例化再设置标题
这种方式更灵活,也不用纠结重载匹配问题:import PyQt6.QtWidgets as Qtw app = Qtw.QApplication([]) alert_window = Qtw.QMessageBox(text="Foo") alert_window.setTitle("Bar") alert_window.exec()
关于存根文件与参考文档
存根文件的重载定义是正确的,只是你没满足它的参数要求(必须传icon)。如果存根文件的信息不够清晰,还可以参考:
- PyQt6官方API参考文档(聚焦Python绑定的具体实现)
- Qt官方的C++文档(PyQt的API逻辑基本与Qt原生一致,可作为补充参考)
- PyQt6自带的示例代码,能直观看到各类组件的正确用法
内容的提问来源于stack exchange,提问作者McSlayR
相关产品推荐
相关产品推荐

