pyqt组件点击事件(其他事件也一样)传递参数

是这样,做项目的时候需要对多个组件共用一个方法,这个时候就有一个问题,如何去辨别每次触发这个方法的是哪个组件。

常规的方式是通过self.sender()方法来获取触发源是谁。然后通过触发源的text属性内容的不同来区分。比如:

    def setColor(self, pressed):

        source = self.sender()

        if pressed:
            val = 255
        else: val = 0

        if source.text() == "Red":
            self.col.setRed(val)
        elif source.text() == "Green":
            self.col.setGreen(val)
        else:
            self.col.setBlue(val)

        self.square.setStyleSheet("QFrame { background-color: %s }" %
            self.col.name())

但是笔者认为这种方式的对整个系统都是不稳定的成分,为什么呢,因为text属性本身就是一个可变的参数,而且变化的概率还很大,所以就想能不能找到一个类似html里头dom元素设置id这种的方式。翻看了一圈,还没发现。最后曲线救国,就是触发方法的时候传递一个标识参数,通过参数的不同来判断是谁触发的。如下:

1、使用lambda修饰符(因为传参了,需要加上括号,在python里头就是表示立刻运行这个方法,所以必须加上lambda:来避免这种情况),连接信号

self.pushButton.clicked.connect(lambda:self.buttonClicked(1,1))

2、定义方法

def buttonClicked(self,p1,p2):

    pass

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独行侠_阿涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值