Python GTK: как проверить, открыт ли комбинированный список? - PullRequest
1 голос
/ 22 февраля 2012

Я работаю над графическим интерфейсом пользователя машины.Он использует комбинированные списки в окне, которое может быть перерисовано в любое время в основном потоке, вне основного цикла (используя функцию idle_add внутри gtk-lock).Это произойдет, когда на машине будет нажата определенная кнопка - настоящая, а не виджет.Если это происходит, когда выпадающий список открыт, я получаю Gtk-Warning: утверждение «WIDGET REALIZED FOR EVENT» не выполнено и моя программа зависает.

Я пытался добавить код:

    combo.set_active(-1)
    while gtk.events_pending():
          gtk.main_iteration()

, но это не решило проблему.

Я искал такие функции, как combo.is_open () илиcombo.close () но они, кажется, не существуют.Сигналы, относящиеся к комбо, являются «измененными», «активными», «всплывающими» и «всплывающими», но первый отправляется только тогда, когда в комбо выбран текст, а остальные являются связующими сигналами.

Есть ли способ проверить, открыта ли комбинация (была выбрана)?

1 Ответ

2 голосов
/ 22 февраля 2012

Используйте свойство <a href="http://developer.gnome.org/gtk3/stable/GtkComboBox.html#GtkComboBox--popup-shown" rel="nofollow">popup-shown</a>.

В документации даже сказано, что вам нужно подключиться к notify::popup-shown, что звучит как то, что вам нужно.

...