我怎么知道哪个小部件的焦点是乌尔维德?



我正在设计一个带有urwid的Python接口,我有几个元素无法使用光标导航键(即向上向下,向向右)访问,这确实是我想要的。我想要的是使用Tab键实现循环导航。

我希望使用这种技术达到三个组件 - 即由单选按钮组成的列表框,编辑框和编辑框右侧的按钮。我的应用程序是围绕一个派生 urwid 的类构建的。小部件包装。它包含一个框架,其正文是列表框,页脚包含编辑框。

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

谁能指出我正确的方向?

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新