解决pyqt5中self.sender()无法获取到控件名称的问题

第一次写csdn,小白一个,和大家分享一个今天遇到的问题。

 

我遇到一个问题就是自己在使用qt designer写了一个小功能程序之后,然后将ui文件转换为py文件

然后我的控件中有一个槽函数需要被多个按钮所响应,而且我还需要分辨出到底是哪个按钮所按的,所以我就查找有没有什么方法能够解决这个问题,开始使用的是传参的方法

QPushButton.clicked.connect(lambda:self.信号槽方法) 然后在槽函数中对传过来的参数进行判断就可以了。 其实已经能够解决我的问题了,但是感觉肯定还有 别的专业的方法,经过查询后,发现有一个sender函数能够获取到信号的发送者。

非常高兴,开始使用。但是直接在槽函数体内写入 是sender = self.sender()  发现弹出的窗口在我点击之后就直接崩溃了,导致我也很郁闷,使用debug了半天,也不懂(主要也不会用debug)。然后看到网上有个帖子写的看不到错误的时候可以使用cmd打开就可以看到了

然后我是用cmd来开启,然后点击按钮

发现错误成功报出来,这便简单了。

那么就是解决AttributeError: 'Ui_MainWindow' object has no attribute 'sender'报错

学习的这个文章https://www.cnblogs.com/gaigaige/p/7755357.html

讲到:添加一个__init__方法,在__init__里,先调用了父类QMainWindow的构造方法,然后调用了自动生成的两个方法。(注意,传的参数是self,因为他已经是QMainWindow了。)

我将自己生成的py文件的Ui_MainWindow类,

添加了一个__init__方法,然后发现sender函数能够成功输出

问题解决,撒花,也是给自己做一个记录,大神可以指点原理,自己小白一个(在线卑微~~)。

 

 

 

 

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个示例代码,它在表格创建10个QLineEdit控件,并为每个控件连接了一个单击事件: ``` import sys from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QLineEdit from PyQt5.QtCore import Qt class MyTable(QTableWidget): def __init__(self, rows, columns): super().__init__(rows, columns) # 设置表格不可编辑 self.setEditTriggers(QTableWidget.NoEditTriggers) # 创建10个QLineEdit控件并添加到表格 for i in range(10): line_edit = QLineEdit() self.setCellWidget(i, 0, line_edit) # 为每个控件连接单击事件 line_edit.clicked.connect(self.on_line_edit_clicked) def on_line_edit_clicked(self): # 获取当前单击的控件 line_edit = self.sender() # 获取当前控件所在的行和列 row = self.currentRow() column = self.currentColumn() # 在控制台输出当前控件的行和列 print('Clicked on row {}, column {}'.format(row, column)) if __name__ == '__main__': app = QApplication(sys.argv) table = MyTable(10, 1) table.show() sys.exit(app.exec_()) ``` 在这个示例,我们首先创建了一个MyTable类,继承自QTableWidget。在MyTable的构造函数,我们设置了表格不可编辑,并创建了10个QLineEdit控件,并将它们添加到表格。我们还为每个控件连接了一个单击事件,当用户单击任何一个控件时,就会在控制台输出该控件所在的行和列。 在main函数,我们创建了一个MyTable对象,并显示它。当我们单击任何一个QLineEdit控件时,就会在控制台输出该控件所在的行和列。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值