3

是否可以跟踪urwid.ListBox对象中突出显示的项目的变化?或者甚至通过一个ListWalker对象?

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

在此处输入图像描述

4

1 回答 1

7

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 > 信号功能 > 连接

在此处输入图像描述

于 2017-03-30T17:58:28.493 回答