第一次写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函数能够成功输出
问题解决,撒花,也是给自己做一个记录,大神可以指点原理,自己小白一个(在线卑微~~)。