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

3
有没有可能跟踪urwid.ListBox对象中高亮项的更改?或者通过ListWalker对象?
我想在用户使用箭头键[]从一个项目移动到另一个项目时调用回调,而不是当用户在一个项目上按[Enter]时调用回调。 enter image description here
1个回答

7
经过一些研究和实验,可以通过在ListWalker对象中注册modified信号来实现此操作。
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 > 信号函数 > 连接

在这里输入图片描述


请查看 https://github.com/zulip/zulip-terminal 以获取更多使用 urwid 的高级示例。 - Aman Agrawal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接