urwid中是否有焦点更改事件?

时间:2017-03-30 16:47:29

标签: python python-3.x events urwid

是否可以跟踪urwid.ListBox对象中突出显示的项目的更改?甚至是通过ListWalker对象?

当用户点击{{1>时,当用户使用箭头键[][]而不是从一个项目移动到另一个项目时,我想调用回调在一个项目上。

enter image description here

1 个答案:

答案 0 :(得分:6)

经过一些研究和实验,可以通过向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()

参考:Urwid > Signal functions > connect

enter image description here