首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨平台动态终端打印

跨平台动态终端打印
EN

Stack Overflow用户
提问于 2021-06-24 13:57:11
回答 1查看 129关注 0票数 0

请考虑以下代码:

代码语言:javascript
复制
import time

while True:
    print(f"{object}")
    doing_something_to_object(object)
    object.update()
    time.sleep(3)

输出将如下所示,生成换行符:

代码语言:javascript
复制
value
value
value
value

我想做一些事情,这样当object准备好显示时,object就会在屏幕上更新。

为了更好的解释,

我想输出一个具有不断更新值的屏幕。

代码语言:javascript
复制
*--------------------------------------*

value1                          value2

*--------------------------------------*

如果我要在循环中打印该值,在下一次打印之前更新字符串中的值,它将如下所示(我不想这样):

代码语言:javascript
复制
*--------------------------------------*

value1                          value2

*--------------------------------------*
*--------------------------------------*

value1                          value2

*--------------------------------------*
*--------------------------------------*

value1                          value2

*--------------------------------------*
*--------------------------------------*

value1                          value2

*--------------------------------------*

有什么方法可以做到这一点而不使用像玩偶或tkinter之类的东西呢?curses应该能做到这一点,但它不是跨平台的。linux和windows都有curses吗?

EN

回答 1

Stack Overflow用户

发布于 2021-06-24 15:15:54

如果我理解正确,您希望更新显示它的值,而不将其再次打印在它下面.

在终端/CLI窗口中(据我所知,所有这些窗口),一旦一行被打印出来,它就不能被修改或擦除--在当前的提示/输出行是只读文本之前的所有内容。但是仍然可以更改当前的行,这样做的方法是

  1. 不打印换行符(\n)字符,直到完成,
  2. 使用回车(\r)将光标移到行的开头,因此下一个值将被写入上一个

的“顶部”。

请注意,"\r“不是背行行距,例如,print("abcdefg\rxyz")将导致xyzdefg。根据需要用空格填充文本。

代码语言:javascript
复制
import time

t1 = time.time()
obj = 0

while obj < 100000000:
    obj = time.time() - t1
    print(f"\r{obj}", end='')
    time.sleep(0.5)

print("\nDone !")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68117188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档