#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()