PyQt编程快速上手
上QQ阅读APP看书,第一时间看更新

1.4.1 理解信号和槽机制

其实这个机制非常好理解,我们拿红绿灯来做个类比。

当红灯信号发射后,行人就会停下;当绿灯信号发射后,行人就会前进。我们用red和green来表示信号,用stop()和go()函数来表示行人的动作,这两个函数也被称为槽函数。也就是说,当red信号发射后,stop()槽函数就会被调用;当green信号发射后,go()槽函数会被调用。不过信号和槽只有在连接之后才可以起作用,连接方式如图1-21所示。

在图1-21中,widget就是PyQt中的控件对象,signal就是控件对象拥有的信号,connect()方法用于连接信号和槽,而slot是槽函数名称。我们参考上面的红绿灯例子,了解代码中的连接方式:

traffic_light.red.connect(stop)
traffic_light.green.connect(go)

图1-21 信号和槽的连接方式

red信号和stop()槽函数进行连接,green信号和go()槽函数进行连接,只有这样连接后,发射的信号才可以调用相应的槽函数。总结起来就一句话:连接后,信号发射,槽函数“启动”。

在connect()方法中传入的是函数名。