pyqt5 信号槽 判断信号发出者(sender)

1
qt的信号槽除了一对一也可以一对多,比如多个按键的click信号链接一个槽函数。这个收就需要判断是哪一个按键发出的信号

2
sender()在QT里的原型是QObject::sender(),也就是对象,实例化的对象可以发送信号,返回发送信号的对象的指针,返回类型为QObject *。

3
pyqt里的话用起来很方便,直接self.sender()就可以直接得到了
if self.sender()== 对象:判断就行

class Table(QWidget):#表格
    def __init__(self):
        super(Table, self).__init__()
        self.initUI()
        
    def initUI(self):
        self.setWindowTitle("test")
        self.resize(350,200)
        hor2=QHBoxLayout()
        self.TableWidget=QTableWidget(1,3)
        #表格头的显示与隐藏
        self.TableWidget.verticalHeader().setVisible(False)
        self.TableWidget.horizontalHeader().setVisible(False)
        
        #在单元格内放置复选框
        self.C=['comBox'+str(n) for n in range(3)]
        for n in range(3):
            self.C[n]=QComboBox()
            self.C[n].addItems(['0','1','2'])
            self.TableWidget.setCellWidget(0,n,self.C[n])
            self.C[n].setCurrentIndex(-1)
            self.C[n].activated[str].connect(self._slot)

        hor2.addWidget(self.TableWidget)
        self.setLayout(hor2)
        
    def _slot(self,value):
        if self.sender() == self.C[0]:
            print('第一个复选框')
        if self.sender() == self.C[1]:
            print('第二个复选框')
        if self.sender() == self.C[2]:
            print('第三个复选框')
        
        print('value:',value)



if __name__ == '__main__':
    app=QApplication(sys.argv)

    demo = Table()
    demo.show()
    sys.exit(app.exec_())

补充一下:

self.btn.pressed.connect(lambda: self.set_btn_val(self.sender()))
def set_btn_val(self):
    if  self.sender()==self.btn:
    	pass
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值