2016-05-21 1 views
0

В моем приложении PyQt GUI есть много спинбокс, которые вызывают длительную процедуру настройки при изменении их значений.Как исправить задержанный сигнал в графическом интерфейсе PyQt?

Моя проблема заключается в следующем: При вводе (больших) номеров сигнал spinBox.valueChanged() излучается каждый раз при вводе одной цифры. Это приводит к тому, что функция настройки вызывается гораздо чаще, чем необходимо.

Есть ли способ задержать спусковой крючок, пока я не набрал номер, а затем запустил сигнал только один раз? Как вы обычно заботитесь об этой проблеме в своих графических интерфейсах?

Я нашел this, но я думаю, что это потребует создания дополнительного таймера для каждой уникальной функции, которую я хочу вызвать при испускании. Это не очень элегантно.

ответ

0

Для спинбокс имеется keyboardTracking.

Если отслеживание клавиатуры отключено, спинбокс не выдает сигнал valueChanged() во время ввода. Он излучает сигнал позже, когда нажата клавиша возврата, когда теряется фокус клавиатуры или когда используются другие функции спин-бокса, например, нажатие клавиши со стрелкой.

Я считаю, что это решает вашу проблему.

+0

Спасибо! Я объединю ваше решение с Бренданом. Кажется, это дает «ленивое» поведение для спинбокса. –

1

Вы также можете подключиться к сигналу editingFinished, который не испускается до тех пор, пока пользователь не нажмет кнопку ввода, или проигрыватель не потеряет фокус. Тем не менее, вы получите этот сигнал, даже если значение не изменится, поэтому вы можете проверить его на последнее значение, чтобы избежать необходимости выполнять длительную процедуру без необходимости.

Смежные вопросы