1

我正在设计一个 Python 界面,并且我有几个使用光标导航键(即、和)urwid无法访问的元素,这确实是我想要的。我想要的是使用键实现循环导航。updownleftrightTab

我想使用这种技术来实现三个组件——即一个由单选按钮组成的列表框、一个编辑框和一个位于编辑框右侧的按钮。我的应用程序是围绕派生 urwid.WidgetWrap 的类构建的。它包含一个框架,其主体是列表框,页脚包含编辑框。

到目前为止,我已经发现我可以Tab从主循环的unhandled_input回调中捕获密钥......但我不知道这是否是要走的路。此外,我还没有弄清楚如何检测这三个小部件中的哪一个具有焦点。

谁能指出我正确的方向?

4

1 回答 1

0

您可能希望在 容器小部件的 urwid 文档中好好阅读它。

每个 Container 小部件都应该跟踪在给定时刻哪些小部件具有焦点,并且它们具有查找焦点小部件的方法get_focus_path()get_focus_widgets方法。

看起来默认容器小部件使用此类WidgetContainerMixin,您可以检查以查找更多信息。

至于实现焦点处理的正确方法,我相信最好的方法是创建自定义小部件(继承现有小部件或创建包装器urwid.WidgetWrap),这将共享焦点处理行为,但使用unhandled_input可能是一个很好的起点至少探索这些。

于 2018-02-19T14:07:38.713 回答