【发布时间】:2016-05-08 02:20:58
【问题描述】:
我在 Windows 7(64 位)上的 Python(32 位 2.7.2)中使用 Colorama,它非常适合在控制台中为文本着色,但我在让它移动光标时遇到问题.
具体来说,如果我使用 ANSI 代码上一行,当光标远离屏幕底部时它可以工作,但是当光标靠近底部时,光标不会正确向上移动,然后是文本开始在页面下方打印,导致页面滚动。
我用来上移一行的代码是:
sys.stdout.write('\x1b[4A')
其中 4 将其向上移动四行(类似 '\x1b[8A' 会将其向上移动八行)
我不确定这是否是我对 ANSI 代码的工作原理缺乏了解,或者这是否是 Colorama 的问题。
要重新创建它,请在普通的 Windows 命令提示符 (cmd.exe) 或 Console2 中运行类似的内容(似乎没有区别)
from __future__ import print_function
import colorama
from colorama import Fore, Back, Style
import sys
def main():
print('Blah')
print('Blah')
print('Blah')
print('Blah')
print('Blah')
print('Blah')
print('Blah')
print('Blah')
print('Blah')
print('Blah')
print('Blah')
sys.stdout.write('\x1b[6A')
sys.stdout.write('some text')
if __name__ == '__main__':
main()
如果您在屏幕顶部附近运行上面的代码,它会在“Blah”输出的中间部分写入“some text”,但是,如果您在屏幕底部附近启动它,“some text”将在末尾,光标似乎根本没有向后滚动。
我特别需要将光标向上移动,所以它是相对于其他输出放置的,而不是给它一个绝对的屏幕位置(即移动到位置 x,y)
关于从哪里开始有什么建议吗?
【问题讨论】:
-
你有没有得到这个工作?如果是这样,您可以发布下面的代码并接受答案以减少 SO 上未回答的问题总数