Цикл через Gtk.Завершение записи с помощью Tab

#python-3.x #gtk3

#python-3.x #gtk3

Вопрос:

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

Похоже, что по умолчанию используется Gtk.Реализация EntryCompletion позволяет только циклически просматривать результаты с помощью клавиш со стрелками. Есть ли какой-нибудь (простой) способ включить циклический просмотр результатов всплывающего окна с помощью клавиши TAB?

Вот минимальный пример функции автозаполнения ввода Gtk:

 import gi

gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

gi.require_version('Gdk', '3.0')
from gi.repository import Gdk

MOD_MASK = (Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK |
            Gdk.ModifierType.MOD4_MASK | Gdk.ModifierType.SHIFT_MASK)


class EntryCompletionExample:
    def __init__(self):
        window = Gtk.Window()
        window.connect('destroy', lambda w: Gtk.main_quit())
        vbox = Gtk.VBox()
        label = Gtk.Label('Type a, b or c. Use Arrow-Keys or Tab to cycle through items.')
        vbox.pack_start(label, False, False, 0)

        # Init store
        store = Gtk.ListStore(str)
        for item in ['apple', 'ananas', 'banana', 'orange']:
            store.append([item])

        # Configure completion
        completion = Gtk.EntryCompletion()
        completion.set_model(store)
        completion.set_text_column(0)

        entry = Gtk.Entry()
        entry.set_completion(completion)

        vbox.pack_start(entry, False, False, 0)
        window.add(vbox)
        window.show_all()
        return


if __name__ == "__main__":
    ee = EntryCompletionExample()
    Gtk.main()