在我的PyQt GUI应用程序中,有很多spinBox会在值改变时触发冗长的设置例程。
我的问题是:
输入(大)数字时,每次输入一个数字时都会发出spinBox.valueChanged()
信号。这导致设置函数被调用的次数超过了必要的次数。
有没有办法延迟触发,直到我输入数字然后只触发一次信号? 你通常如何在GUI中处理这个问题?
我发现this但我认为这将涉及为我想要发出的每个独特功能创建一个额外的计时器。这似乎不太优雅。
答案 0 :(得分:2)
您还可以连接到editingFinished
信号,直到用户按Enter键或者旋转框失去焦点时才会发出该信号。但是,即使值没有变化,您也会收到此信号,因此您可能希望根据最后一个值检查它,以防止不必要地运行冗长的例程。
答案 1 :(得分:1)
对于spinbox,有keyboardTracking属性。
如果禁用键盘跟踪,则在键入时,spinbox不会发出valueChanged()信号。当按下返回键时,当键盘焦点丢失时,或者当使用其他旋转框功能时,它会发出信号。按箭头键。
我相信这可以解决您的问题。