我在python中编写了一个简单的聊天程序。 你只需要一个简单的input()提示符(使用readline),它应该总是在底部。
partner: hey
you > (stdin)
现在,我正在尝试这个而不使用curses,我通过定义这两个常量
取得了成功CURSOR_UP_ONE = '\x1b[1A'
ERASE_LINE = '\x1b[2M'
每当收到来自“合作伙伴”的消息时,我都会这样使用:
print(ERASE_LINE + CURSOR_UP_ONE)
print('partner > ' + msg)
print('you > ')
这很好用,但是,有一个问题:当我开始输入时,就像来自'partner'的消息一样,它会删除包括我输入的内容(我当时无法访问)以及擦除的字符显然仍然是input()返回的一部分。
那么,是否有一种方法可以在没有curses的情况下向下移动输入提示,或者是一种缓冲输入字符以便能够访问,显示和操作它们的方法?
答案 0 :(得分:0)
如果您将终端设置为原始模式(使用模块termios
),并处理键入的每次击键,那么您将知道是否有任何缓冲输入打印合作伙伴的消息。
(另外,如何从合作伙伴(套接字?)接收消息,以及如何从TTY与合作伙伴多路复用输入?)
答案 1 :(得分:0)
好的,我解决了我的问题。
我发现了模块rl
。我这样用它:
import rl.readline as readline
# code
print(ERASE_LINE + CURSOR_UP_ONE)
print('partner > ' + msg)
readline.redisplay(True)
这只是重新显示提示,包括我输入的内容(正是我想要的内容)。