问题标签 [urwid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 Urwid 中将项目附加到 SimpleFocusListWalker
而不是像urwid 示例中那样执行此操作:
我想这样做:
但是,当我这样做时,我会得到一个很长的异常转储,结尾为:
AttributeError:“列表”对象没有属性“行”
将项目附加到 SimpleFocusListWalker 的正确方法是什么。
我正在尝试从上到下构建一个菜单,而不在构造函数中指定整个内容。
python - urwid 更改显示属性
我正在创建一个配置器,允许用户从一组合法值中进行选择。对于每个合法值,我创建一个选项(本质上是一个菜单按钮)。如果用户选择一个选项,则该选项会将值更改为其标题。
请注意,具有当前值的选项具有与其他选项不同的属性。我想在选择后循环选择并更改属性以匹配新值。
我可以通过将legal_choices
列表传递给所有选项来循环选择(或者做一些更聪明的事情),但我不知道如何编写循环遍历小部件列表并更改其属性的代码。
有谁知道如何更改 urwid 中小部件的属性?
python - Urwid 键盘触发弹出窗口
当用户按下 H 键时,我试图在我的 urwid 应用程序顶部显示一个帮助对话框,但我似乎无法让它消失。它显示没有问题。我错过了什么?我一整天都在做这件事。
我已经查看了几个示例,这些示例描述了实现这一点的不同方法。我玩过信号,但无济于事。我想避免有一个可见的帮助按钮,而只依赖键盘快捷键。
python - 如何将 urwid.BigText 放入 urwid.ListBox
AttributeError: 'BigText' object has no attribute 'rows'
尝试在 ListBox 顶部放置 BigText 时,我不断收到错误消息。我知道 BigText 是一个“固定”小部件,而 ListBox 需要一个“流”小部件,但无论我尝试什么,我似乎都无法让我的程序采用 BigText。这是我尝试过的详尽示例:
谢谢!
python-3.x - Urwid 过滤按键/过滤掉鼠标点击
我正在使用 Urwid 组合一个小控制台应用程序。我使用了 Urwid 教程(参见http://urwid.org/tutorial/)中描述的模式来处理按键事件。
例如
我的问题是 unhandled_input 似乎捕获了鼠标点击,这导致我的处理程序出错
过滤按键并丢弃鼠标点击的最佳方法是什么?
python - Python Urwid 中的按键功能
如果这不是一个好问题,请原谅我。我很难理解 Python URWID 库中的代码之一。这是教程中的示例代码之一。http://urwid.org/tutorial/index.html
我的问题是
1) Keypress 功能以击键作为输入。我无法理解在哪一行代码中,击键被分配给“键”变量。第7行直接使用,不做任何初始化
这怎么可能?
2) Keypress 函数尚未在 QuestionBox 类之外调用。即使没有调用该函数,为什么它会被执行?
3) 新类 QuestionBox 中没有定义init函数。为什么不需要它?我相信它应该 在类定义中同时具有init和super 。
4) 'keypress' 功能中的 'size' 字段是什么?
提前致谢
python - 如何使用 urwid 确定列表框中可见项目的数量?
我想实现一些提示,urwid.ListBox
当我向上或向下滚动时,在可见项目列表的下方或上方是否仍有项目。'向下滚动' 提示应该只在最后一个可见项目之后有剩余项目时出现,并且当最后一个可见项目是列表中的最后一个项目时它应该消失。反向适用于“向上滚动”提示。
然后我需要知道列表中有多少可见项目。有没有办法检索列表框中可见项目的数量,我想它等于列表框的高度,对吧?
这是我要检查的起点:
这个想法是要知道当终端窗口缩小或不够高以显示所有内容时,列表框是否在框架内完全可见,即frame.height >= listbox.height
.
navigation - 我如何知道哪个小部件具有 urwid 的焦点?
我正在设计一个 Python 界面,并且我有几个使用光标导航键(即、和)urwid
无法访问的元素,这确实是我想要的。我想要的是使用键实现循环导航。updownleftrightTab
我想使用这种技术来实现三个组件——即一个由单选按钮组成的列表框、一个编辑框和一个位于编辑框右侧的按钮。我的应用程序是围绕派生 urwid.WidgetWrap 的类构建的。它包含一个框架,其主体是列表框,页脚包含编辑框。
到目前为止,我已经发现我可以Tab从主循环的unhandled_input
回调中捕获密钥......但我不知道这是否是要走的路。此外,我还没有弄清楚如何检测这三个小部件中的哪一个具有焦点。
谁能指出我正确的方向?
linux - 如何使用 urwid 和 asyncio 使长任务不阻塞?
我正在编写一个 Python curses 应用程序,它通过分别通过进程'stdin
和发送和接收字符串来控制外部(Linux,如果有帮助的话)进程stdout
。该接口使用urwid
. 我已经编写了一个类来控制外部进程和其他几个用于一些 urwid 组件的类。
我还有一个按钮,应该向外部进程发送命令。但是该过程不会立即响应,其任务通常需要几秒钟,在此期间我希望界面不要冻结。
这是我运行子进程的方式:
我必须使进程的输出流非阻塞才能解析其输出。我不知道这对我的问题是否重要。
以下是我用来控制子进程输入和输出流的方法:
我谈到的按钮只是从主脚本入口函数中设置了它的回调。该回调应该向子进程发送命令并循环通过结果输出行,直到找到给定的文本,在这种情况下回调函数退出。在此之前,该过程会输出一些我需要捕获并在用户界面中显示的有趣信息。
例如:
需要注意的是:
- 即使进程输出流是静默的,直到从(可选)解析的行中读取哨兵值,该
read()
函数也会旋转(我找不到其他方式), - urwid 界面不会刷新,直到按钮回调函数退出,这会阻止
urwid
' 的主循环刷新屏幕。
我可以使用线程,但从我读过的urwid
支持asyncio
来看,这就是我想要实现的。urwid
你可以称我为笨蛋,因为即使在浏览asyncio 示例和阅读 Pythonasyncio
文档之后,我也无法清楚地弄清楚如何。
考虑到这些方法中的任何一种都有更改的空间,我仍然希望保持过程控制类——即包含read()
和的类send()
——尽可能通用。
到目前为止,我没有尝试过导致界面在进程繁忙时被更新。接收进程“通知”的组件是一个普通的urwid.Text()
小部件。
function - pass additional arguments with callback function
The following example (taken from here: http://urwid.org/tutorial/index.html) shows how to pass key values to a callback function show_or_exit
.
How can I pass another argument to show_or_exit
with this callback that depend on the state of the system, that would be something like this?