gpt4 book ai didi

python - 如何从标准输入获取输入,使用curses 显示某些内容并输出到标准输出?

转载 作者:太空宇宙 更新时间:2023-11-03 16:07:00 25 4
gpt4 key购买 nike

我正在尝试制作一个Python脚本,它从标准输入获取输入,使用curses在终端中显示GUI,然后当用户完成交互时将结果输出到标准输出。这种行为的一个很好的例子是 selecta但它是用 ruby​​ 编写的。

我无法让诅咒显示任何内容。这是我迄今为止尝试过的最小示例(它只显示一个字符并等待一个字符):

import os, sys
import curses

c = None

old_out = sys.__stdout__
old_in = sys.__stdin__
old_err = sys.__stderr__
sys.__stdout__ = sys.stdout = open('/dev/tty', 'w')
sys.__stdin__ = sys.stdin = open('/dev/tty')
sys.__stderr__ = sys.stderr = open('/dev/tty')


def show_a(s):
global c
s.addch(ord('a'))
c = s.getch()

curses.wrapper(show_a)

sys.stdin.flush()
sys.stdout.flush()
sys.stderr.flush()
sys.stdin.close()
sys.stdout.close()
sys.stderr.close()
sys.__stdout__ = sys.stdout = old_out
sys.__stdin__ = sys.stdin = old_in
sys.__stderr__ = sys.stderr = old_err

print(c)

当我尝试使用 echo $(python3 show_a.py) 时,不会显示任何内容,但按任意键后会显示其号码:

curses displays nothing in terminal

使用诅咒是否可以实现类似的操作,如果可以,该怎么做?

最佳答案

它不起作用,因为 print 语句正在写入与 curses.wrapper 相同的标准输出。 。您可以将 print 推迟到恢复 sys.stdout 之后,或者您可以使用 file= 属性,如下所示:

printf(s.getch(), file=old_out)

对于另一个(排序)问题,听起来好像您需要修改代码来执行 refreshgetch之后(让curses显示它),并且根据curses的版本,标准输出的刷新会很有帮助。

进一步阅读:

关于python - 如何从标准输入获取输入,使用curses 显示某些内容并输出到标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39688790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com