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