2

如何设置/更改CommandMapa SimpleFocusListWalker?默认情况下,“向上”和“向下”击键与更改焦点相关联。我想将这些修改为其他内容。

这可能吗?

4

1 回答 1

2

一种简单有效的解决方案是覆盖keypress方法ListBox并替换键:

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()小部件等细节,并且不允许焦点超出范围。

于 2018-03-16T21:20:16.540 回答