我正在设计一个带urwid
的Python接口,我有几个使用光标导航键无法访问的元素(即 up , down ,< kbd> left 和 right )这确实是我想要的。我想要的是使用 Tab 键实现循环导航。
我想使用这种技术达到三个组件 - 即一个由单选按钮组成的列表框,一个编辑框和编辑框右侧的按钮。我的应用程序是围绕一个派生urwid.WidgetWrap的类构建的。它包含一个框架,其主体是列表框,页脚包含编辑框。
到目前为止,我已经发现我可以从主循环的unhandled_input
回调中捕获 Tab 键...但我不知道它是否是要去的方式。此外,我还没有弄清楚如何检测这三个小部件中的哪一个具有焦点。
有人能指出我正确的方向吗?
答案 0 :(得分:0)
您可能希望在the urwid documentation for the Container widgets中仔细阅读。
每个Container小部件应该跟踪哪些小部件在给定时刻具有焦点,并且他们使用get_focus_path()
和get_focus_widgets
方法来查找焦点小部件。
它看起来默认容器小部件使用此WidgetContainerMixin
类,您可以检查它以查找更多内容。
至于实现焦点处理的正确方法,我认为最好的方法是创建自定义小部件(继承现有小部件或创建包含urwid.WidgetWrap
的包装器),这些小部件将共享焦点处理行为,但是使用unhandled_input
可能是一个很好的起点,至少可以探索这些。