PyQt 槽函数多次执行的问题
一、问题描述
二、问题解析
三、解决方案
一、问题描述
简化一下场景,使用qt designer设计的窗口中,有一个pushButton按钮,名为my_button, 连接clicked信号和自定义的槽函数on_my_button_clicked(), 对按钮按下clicked后,发现槽函数执行了3次。
二、问题解析
其中on_xxx_clicked()函数的命名是on_对象名_signal名的规则,而这正是Qt的信号-槽默认的连接规则,也就是说你不对按钮进行任何connect时,而仅仅只是把槽函数写成on_对象名_signal形式,qt也会自动执行该函数,一旦你connect了按钮的clicked信号但响应clicked信号的槽函数命名不是on_对象名_signal名的规则,那么qt就不会自动执行on_对象名_signal名的规则函数,转而执行你定义的槽函数。上面代码connect信号到qt默认的信号-槽默认连接规则的槽函数上,且槽函数命名是on_对象名_signal名的规则,所以qt会执行两次,一次是connect连接的,一次是qt默认的(默认的槽函数和你conenct连接的槽函数相同,所以执行了多次)
三、解决方案
简单点的方案就是:
自定义的槽函数尽量不要命名为on_对象名_signal形式,避免与QT默认槽函数重名。
原文链接:https://blog.csdn.net/hubing_hust/article/details/128198460