2016-05-21 10 views
0

私のPyQt GUIアプリケーションには、値が変更されたときに長いセットアップルーチンを引き起こす多くのスピンボックスがあります。PyQt GUIで遅延信号を放出する方法は?

私の問題は次のとおりです。 大きな数字を入力すると、1桁の数字を入力するたびにspinBox.valueChanged()信号が出力されます。これにより、セットアップ機能が必要以上に多く呼び出されます。

番号を入力して信号を1回だけ発射するまでトリガーを遅らせる方法はありますか? どのようにして通常その問題をGUIで処理しますか?

私が見つけたのはthisでしたが、放出時に呼びたい独自の機能ごとに余分なタイマーを作成する必要があると思います。それは非常にエレガントではないようです。

答えて

0

スピンボックスの場合、keyboardTrackingプロパティがあります。

キーボードトラッキングが無効な場合、スピンボックスは入力中にvalueChanged()信号を出力しません。後で、戻りキーが押されたとき、キーボードのフォーカスが失われたとき、または他のスピンボックス機能が使用されているとき、信号を発する。矢印キーを押す。

これはあなたの問題を解決すると思います。

+0

ありがとうございました!あなたのソリューションをBrendan'sと組み合わせます。これは、スピンボックスのための 'laziest'の動作を与えるようです。 –

1

editingFinished信号に接続することもできます。この信号は、ユーザーがenterを押すかスピンボックスのフォーカスが失われるまで出力されません。しかし、値が変化しなくてもこの信号を受け取るので、最後の値と比較して長いルーチンを不必要に実行しないようにすることができます。

関連する問題