widget - 如何更改 urwid 小部件导航的键映射?

标签 widget focus keypress urwid

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

这可能吗?

最佳答案

一个简单有效的解决方案是重写 ListBoxkeypress 方法并替换按键:

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/

相关文章:

php - 制作可链接到 4 个不同网站的小部件的最佳方法是什么?

javascript - jQuery::当我使用 fadeIn() 时,我的页面移动了它的焦点!

python - GTK/ python : How to get key-press-event to edit and navigate a TreeView cell?

安卓 : how to show other apps widget in my activity

Wordpress:如何在菜单内放置小部件区域

web-applications - 使用 Sencha ExtJS 增强现有的 Web 应用程序?

JQuery 问题....焦点不起作用

c# - 在没有焦点的情况下在 C# 中打开表单

c# - .NET - 通过顽固的控制检测鼠标移动

Python 2.7 - 如何检查是否按下了 SHIFT-Key 或 CTRL+Key?