PyQt5按钮绑定点击事件报错AttributeError问题求助
问题原因及解决办法
核心错误原因
你直接用self.pushButton访问按钮,但实际上通过Qt Designer生成的UI文件(Editor模块)创建的控件,全部挂载在self.ui对象下,而非当前MyApp实例本身,所以找不到pushButton这个属性。
另外你的代码还有两个额外问题会导致后续报错:
- 初始化顺序错误:
super(MyApp, self).__init__()应该放在最前面,先完成QMainWindow的初始化,再执行其他操作; infoGet方法的参数不符合clicked信号的要求:clicked信号默认只传递一个checked布尔参数(仅按钮设置为可复选时有效),你的方法定义了两个参数会导致参数不匹配报错。
修正后的代码
from PyQt5.QtWidgets import QWidget, QApplication, QMainWindow, QMessageBox import Editor import sys class MyApp(QMainWindow): def __init__(self, parent = None): # 先调用父类初始化,这是Qt窗口类的标准写法 super(MyApp, self).__init__(parent) # 初始化UI并加载到当前窗口 self.ui = Editor.Ui_Form() self.ui.setupUi(self) # 正确访问ui下的pushButton,绑定点击事件 self.ui.pushButton.clicked.connect(self.infoGet) # 调整参数为符合clicked信号的格式,默认参数避免无复选时的问题 def infoGet(self, checked=False): # 同样,所有输入框也要通过self.ui访问 vFN = self.ui.lineEdit.text() vMN = self.ui.lineEdit_2.text() vLN = self.ui.lineEdit_3.text() vID = self.ui.lineEdit_4.text() print(vFN)
关键要点总结
- Qt Designer生成的所有控件,必须通过
self.ui.控件名的方式访问; - 自定义Qt窗口类时,务必先调用父类的
__init__方法完成基础初始化; - 绑定信号时,槽函数的参数数量和类型必须与信号传递的参数匹配,
clicked信号默认传递一个布尔值(可选,可设默认参数)。
内容的提问来源于stack exchange,提问作者From yt
相关产品推荐
相关产品推荐

