如何在 SimpleFocusListWalker
中设置/更改 CommandMap
?默认情况下,“向上”和“向下”击键与更改焦点相关。
我想将它们修改为其他内容。
这可能吗?
最佳答案
一个简单有效的解决方案是重写 ListBox
的 keypress
方法并替换按键:
import urwid
class MyBox(urwid.ListBox):
def keypress(self, size, key):
if key in {'up', 'down'}:
print('use (shift) tab to move cursor.')
return
key_map = {
"shift tab": "up",
"tab": "down",
}
super().keypress(size, key_map[key])
button_list = [urwid.Button(str(k)) for k in range(10)]
urwid.MainLoop(MyBox(button_list)).run()
最好使用内置的 keypress
方法,因为它具有跳过 urwid.Divider()
小部件等优点,并且不允许焦点超出范围.
关于widget - 如何更改 urwid 小部件导航的键映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49306056/