使用pyqt的combobox时,自定义的槽函数使用时没有参数传入,值却改变了?

使用pyqt的combobox时,自定义的槽函数使用时没有参数传入,值却改变了

self.connect(self.rx2_atten_combox, SIGNAL('currentIndexChanged(int)'), self.rx2_atten_combox_handler)

def rx2_atten_combox_handler(self, indexaaaaaa):
    self.rx2_atten_index = indexaaaaaa
    self.rx2_atten_combox.setCurrentIndex(self.rx2_atten_index)
    print("self.rx2_atten_index", self.rx2_atten_index)
    print("index1", indexaaaaaa)

打印结果
    self.rx2_atten_index 8
    indexaaaaaa 8
    self.rx2_atten_index 25
    indexaaaaaa 25

indexaaaaaa全局只有这一个名称,没有重名的。
rx2_atten_combox_handler,槽函数只出现在定义和connect连接里面
indexaaaaaa,没有参数传入,使用时下拉combobox却能改变index的值,这是为什么啊?
请高手指点yi'xia

2个回答

由于你是下拉框呀,每个下拉按钮位置对应一定的数值,你多按几个不同的下拉框位置就会发现变化的规律

你重写了槽函数,并不能影响下拉框动作的信号发出,
每个位置对应的位置都会通过信号传参数设置过来赋值给indexaaaaaa的,这个应该是在combobox定义里面有默认的实现

cc6979191
飞雪蝶映 你可以看一下currentIndexChanged 的触发条件,你写的槽函数本来就有接收这个参数的变量indexaaaaaa,这个是信号那边传过来的
5 个月之前 回复
qq_23176133
死线 是不是由于currentIndexChanged(int)这个信号,已经添加了一个整型的参数。另外就是,重写槽函数的意思是默认的信号currentIndexChanged(int)绑定了默认的槽函数吗?
5 个月之前 回复

self.rx2_atten_combox.setCurrentIndex(self.rx2_atten_index)
这里有设置啊

qq_23176133
死线 把 self.rx2_atten_index = indexaaaaaa self.rx2_atten_combox.setCurrentIndex(self.rx2_atten_index) print("self.rx2_atten_index", self.rx2_atten_index),这几行删掉,也能打印indexaaaaa的值出来
5 个月之前 回复
qq_23176133
死线 没有设置
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问