Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PyQt GUI中发出延迟信号?_Qt_User Interface_Pyqt_Signals Slots - Fatal编程技术网

如何在PyQt GUI中发出延迟信号?

如何在PyQt GUI中发出延迟信号?,qt,user-interface,pyqt,signals-slots,Qt,User Interface,Pyqt,Signals Slots,在我的PyQt GUI应用程序中,有很多Spinbox,当它们的值发生更改时,会触发一个冗长的设置例程 我的问题是: 输入(大)数字时,每次输入一个数字时都会发出spinBox.valueChanged()信号。这会导致setup函数被调用的次数比需要的次数多得多 有没有办法延迟触发直到我输入完号码,然后只触发一次信号? 您通常如何在GUI中处理该问题 我发现了,但我认为这需要为我想调用的每个独特的函数创建一个额外的计时器。这似乎不是很优雅。对于Spinbox,有一个属性 如果禁用键盘跟踪,则在

在我的PyQt GUI应用程序中,有很多Spinbox,当它们的值发生更改时,会触发一个冗长的设置例程

我的问题是: 输入(大)数字时,每次输入一个数字时都会发出
spinBox.valueChanged()
信号。这会导致setup函数被调用的次数比需要的次数多得多

有没有办法延迟触发直到我输入完号码,然后只触发一次信号? 您通常如何在GUI中处理该问题


我发现了,但我认为这需要为我想调用的每个独特的函数创建一个额外的计时器。这似乎不是很优雅。

对于Spinbox,有一个属性

如果禁用键盘跟踪,则在键入时spinbox不会发出valueChanged()信号。当按下返回键、键盘焦点丢失或使用其他spinbox功能(如按箭头键)时,它会稍后发出信号


我相信这解决了您的问题。

您还可以连接到信号,该信号在用户按下enter键或spinbox失去焦点之前不会发出。但是,即使值没有更改,您也会收到此信号,因此您可能希望对照最后一个值检查此信号,以避免不必要地运行冗长的例程。

谢谢!我会把你的解决方案和布兰登的结合起来。这似乎给spinBox带来了“最懒惰”的行为。