问题标签 [python-curses]
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 - Python 诅咒:快速退出程序
使用 curses 模块快速退出具有无限循环的 Python 程序的最佳方法是什么?
我尝试在循环结束时添加 nodelay() 方法以及此方法:
但是,在循环的一次迭代中进行所有函数调用需要 2-3 秒。而且由于应用程序的原因,每 5 秒运行一次循环是没有意义的。这意味着为了让我退出程序的方式起作用,有时我必须按住“q”2-8 秒。
我的代码如下所示:
我的另一个解决方案是将 while True 替换为:
这样,无需按住“q”即可退出程序。但按“q”一次后仍可能需要 8 秒才能退出。
出于显而易见的原因,这似乎不是退出程序的最佳方式。我很确定应该有更好(更快)的解决方案。
除此之外,该程序运行良好。这是 2 个超过 300 行的文件,所以我只发布了代码的相关部分以及我尝试的解决方案。
python - Passing stdout from interactive python application to cd command (subshell?)
If I am taking over stdout
, with an interactive Python script that launches a console GUI such as curses
or urwid
; after some actions and closing the loop, how could I cd
to a path printed in stdout
?
For example,
When run, and pressing q
or Q
to quit the urwid
loop:
If this was a simple python script that only printed to stdout
, I could cd $(python simple_script.py)
. With the above, however, this will hang as the python subshell fails to hijack stdout
and process input.
Is it possible to work around this without writing to file?
python - 每次我运行程序时,Python Curses 窗口都没有正确显示
我在 Python 3.4 中遇到了 ncurses 这个奇怪的问题我正在尝试将一些窗口作为我的应用程序的布局,代码如下所示:
我运行程序五次中有两次,显示了两个带边框的窗口,里面有标题消息 IP-MONITORING。但是这是正确的,其余 3 种情况只是self.curses_windows["border"]
显示窗口的边框,没有其他内容。我在刷新方面做错了吗?为什么结果不可预测?
感谢帮助。
python - 如何使用诅咒轻松在控制台中显示多列?
我想在控制台中打印带有诅咒的多列数据。有什么简单的方法可以做到这一点?
目前,我的应用程序打印如下信息:
这导致以下输出
但是,我想要的是这样的:
这应该导致:
有什么简单的方法可以实现这一目标?我是否应该简单地使用迭代器以line 1
, line 11
, line 21
, line 2
, line 12
, line 22
,等顺序进行迭代line 3
,同时使用line.ljust(30, " ")
来获取空格?
或者我应该在 curses 中创建多个屏幕?
是否存在其他甚至更简单的解决方案?
我对诅咒很陌生,因此任何一般性建议+示例都会很棒。
class - 如何在 Python curses 模块中扩展一个类
在 Python curses 中,可以使用该curses.newwin()
函数创建一个新的窗口对象。如何扩展从newwin
函数实例化的对象的类?
我已经尝试过dir(curses)
,但找不到任何明显的类名供我扩展。
python-3.x - python curses addstr y-offset:unicode的奇怪行为
我在使用 python3 诅咒和 unicode 时遇到问题:
我可以很好地显示 unicode 字符,但是 addstr 的 y-offset 参数(我的代码中的“偏移量”)没有按预期运行;我的屏幕显示“わたhello”而不是“わたしhello”
事实上,偏移量有非常奇怪的行为:
请注意,偏移量不是字节,因为字符是 3 字节的 unicode 字符:
我正在运行 python 4.8.3,curses.version 是“b'2.2'”。
有谁知道发生了什么或如何调试它?提前致谢。
python - python脚本长时间运行后崩溃
我有一个在 Raspberry Pi 3 上运行的 python 2.7 脚本。
基本上它的作用是通过 UART 向芯片发送消息,获取响应消息,更新日志文件并将其打印到 UI(由 python curses 创建的监视器上显示的 UI)。它每 1 秒执行一次。
该脚本运行 32 小时没有错误,然后崩溃。UI 崩溃并被错误消息覆盖:“无法打开 shsh:加载共享库时出错:libc.so.6:无法打开共享对象文件...”蟒蛇脚本
我检查了树莓派的内存状态。python 进程在第 32 小时使用了大约 1/4 的总内存。所以不是内存导致崩溃。另外,我尝试在没有监视器的情况下运行它,这将启动一个没有 python.curses 的假 UI 类。同样的崩溃发生在第 32 小时。
现在,我不知道为什么脚本会崩溃。
python - Python 诅咒:Pool.map 的多处理问题?
我在Pool.map
与curses
. Python
每当我使用 UI 中断计算更大的工作负载时Pool.map
:curses
它不再对默认屏幕做出反应getch
。无需立即读取任何按下的键(并继续解析它),我可以按下任意数量的键,直到按下回车键。有时(除此之外)甚至 UI 也会中断(比如显示我正常 shell 的一小部分)。
诅咒 UI 包装器
这是一个包装类 ( Screen
),它为我处理 curses UI 的东西:
实际程序
我写了一个小例子,因为当我Pool.map
在curses
UI 中组合并且工作量很大时,总是会发生上述故障。该代码只是在数组上计算一些无用mult
的add
东西。numpy
现在,当我以高工作量执行代码时(即处理一个形状数组(8, int(1e7)
等于 8 行和 10,000,000 列)curse
的getch
中断,我得到了这种行为:
如您所见,我可以q
随心所欲地按(或任何其他键),但curse
'sgetch
没有反应。我必须按 Enter 键才能识别输入。
此外,由于某种原因,第一行被我原来的 shell 输出覆盖。
Pool.map
这种行为仅在计算大约需要 1 秒或更长时间时才会发生。
当我设置data_arr
为一个小数组时,np.random.rand(8, 100)
一切都像魅力一样工作,但是一旦我提供计算需要> = 1秒的大数组,就会出现这个奇怪的错误并破坏我的curses
用户界面。
有任何想法吗?
是Pool.map
不是以某种方式正确地加入了工作进程?
python - 如何在 python 诅咒中有或没有任何输入字符串的情况下转义子窗口?
在 python curses 中,如果我使用 scr.subwin() 绘制一个子窗口以使用 getstr() 函数获取输入,如下所示
我决定不提供任何意见。我怎样才能逃脱新的子窗口?
谢谢
python-3.x - 使用 Python curses 将 UTF8 字符写入屏幕的最后一个位置
curses
如何使用 Python 的模块将 UTF8 字符写入屏幕的最后一个位置(右下角) ?
这项任务一开始可能看起来很简单,但事实并非如此。首先,Python 2.x无法使用 curses 输出 UTF-8,所以我们在这里假设 Python 3.x。有两个明显的候选人可以这样做:
这给出了一个OverflowError: byte doesn't fit in chtype
. 真可惜。关于什么:
虽然这有效,但它也会滚动屏幕。所以我们实际上写入了倒数第二行的最后一列。仍然是最后一行的最后一列,没有我们的性格。
对于大多数职位,addch
工作得很好,但不适用于最后一个。insch
UTF8 看起来刚刚坏了。