Есть ли событие изменения фокуса в urwid?
Можно ли отследить изменение выделенного элемента в объекте urwid.ListBox
? Или даже через объект ListWalker
?
Я хотел бы вызвать обратный вызов, когда пользователь переходит от одного элемента к другому, используя клавиши со стрелками [
1 ответ:
После некоторых исследований и экспериментов это можно сделать, зарегистрировав сигнал
modified
с объектомListWalker
.import urwid def callback(): index = str(listBox.get_focus()[1]) debug.set_text("Index of selected item: " + index) debug = urwid.Text("Debug") captions = "A B C D E F".split() items = [urwid.Button(caption) for caption in captions] walker = urwid.SimpleListWalker(items) listBox = urwid.ListBox(walker) urwid.connect_signal(walker, "modified", callback) frame = urwid.Frame(body=listBox, header=debug) urwid.MainLoop(frame).run()