当前位置:首页>python>16.业余快速入门Python__实战:下拉列表的信号与返回值

16.业余快速入门Python__实战:下拉列表的信号与返回值

  • 2026-10-10 11:14:10
16.业余快速入门Python__实战:下拉列表的信号与返回值
     上节聊了聊下拉列表QComboBox(),并创建了一个下拉列表及相关数据联动,这节来聊聊下拉列表QComboBox()的信号及信号的返回值;像下面这个下拉列表,他的触发信号是在用户点击并选择数据后,在数据改变时触发的,一般常用的有二个信号:
一、currentTextChange()
     当前文本发生改变时,信号触发时会返回一个当前的字符串,即当前的文本,比如当前是河北——选择河南后,触发currentTextChange()信号,并返回字符串 “河南”。
二、如何拿到信号的返回值
     信号会把返回值传递给,信号连接的——槽函数,举例如下:
self.combo.currentTextChange.connect( self.change )上面的信号连接了一个名字叫 change 的槽函数,下面来定义这个槽函数;
def  change(self, data):
       print(data) 
上面这个槽函数功能就是打印接收到的参数data,这个data就是信号返回的列表框的当前文本,打印出来就是选中的数据,大家可以自己试试打印下,可以更好的理解信号的返回值。
三、currentIndexChange()
     当前索引值发生改变时,信号触发时会返回当前文本所在列表的位置索引,比如当前是河北——选择河南后,触发currentTextChange()信号,并返回 “河南”的索引值为 0 ;
     同样拿到索引值的办法也是通过槽函数拿到;
def  change(self, index):
       print(index)
四、下拉列表数据联动控制
上节的字典如下:
data = {"河南":“郑州”, "河北":“石家庄”, "湖南":“长沙”,......}
键数据列表:
self.list_1 = data.keys() 
( 即 ["河南", "河北", "湖南", ...] )
值数据列表:
self.list_2 = data.values()
( 即 ["郑州", "石家庄", "长沙", ...] )
# 先创建一个下拉列表self.combo = QComboBOX()# 创建下拉列表后先连接信号再添加数据self.combo.currentIndexChange(self.change)# 向下拉列表中添加数据self.combo.addItems(list_1)
为什么要先连接信号、再添加数据:
1)因为软件启动时,下拉列表为空——连接信号——添加数据———文本有空变为有——触发信号——联动设置后面省会郑州;
2)如果先添加数据——再连接信号,软件启动时,第一个省河南对应的省会没有数据——郑州;
先连接信号时启动显示如下:
先添加数据再连接信号显示如下:
大家一定要自己动手试试,先连接信号 跟 先添加数据,看看有什么不同,自己想明白了很简单,以后遇到同样的问题可以举一反三;
3)槽函数的实现
def change(self, index):    sheng_hui = list(self.data.values())    # 上面 self.data.values()就是列表 ["郑州", "石家庄", "长沙", ...]    # 索引值index 二个列表是对应的,河南 与郑州都是0    # sheng_hui[index]就是省对应的省会了    # 把上面的省会设置到输入框内就行了    self.line.setText(sheng_hui[index]) 
     就是用户每选择一次数据且数据变化一次,上面槽函数就执行一次,把对应的省会设置到输入框内展示出来;其实就是这么简单。

最新文章

随机文章