【问题标题】:Is it possible to control 'cursor' of console output / add offset to stdout without overwriting the characters occupying the offset?是否可以控制控制台输出的“光标”/向标准输出添加偏移量而不覆盖占据偏移量的字符?
【发布时间】:2019-03-25 21:46:02
【问题描述】:

主要问题...

我想知道(希望)有一种方法可以管理控制台输出以允许使用高级打印实用程序。

具体来说,我想知道是否有办法将打印下一个字符的“光标”移动到下一个字符空间,而不会覆盖跳过的空间中的字符。

我希望有一个不涉及安装新模块或跟踪标准输出历史的解决方案。

灵感——回车符

我知道回车符('\r')可用于将控制台输出的'光标'移回行首。

从那里,我知道你可以打印任何你想覆盖的字符,覆盖你在标准输出中输入的字符,留下之前输出的剩余字符。

但是,我想在左边留下前一个字符的 x 个字符,然后在我的行的其余部分写入我的输出,并根据需要覆盖。

例如...

我想打印输出:

_____|    Name   |    Desc    |    Task    |    Progress    |
 [1]  Foo         Bar          BarFoo       [====    ] 50.0%

然后能够在不知道名称是“Foo”和 desc 是“Bar”的情况下更新第二行,以在任务下拥有“FooBar”(并更新进度条......)

_____|    Name   |    Desc    |    Task    |    Progress    |
 [1]  Foo         Bar          FooBar       [=====   ] 62.5%

也就是说,我想用 █ 修改下面显示的字符,同时保持下面显示的字符为 X

_____|    Name   |    Desc    |    Task    |    Progress    |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX██████XXXXXXXX████████XX█████X

我知道我可以避免这个问题...

如果我满足于让动态行内容在左侧,而静态内容在右侧,只要事先知道/限制动态内容的宽度,我就可以安全地更新行而不会丢失静态内容。 由于样式原因,我不想要这个。

我知道我可以设置一些系统来跟踪已打印的内容,并重新打印以保持静态内容。 我不想要这个,因为我正在处理的内容有很多并发性,而且为了图形效果,这样做会很乏味。

我也很好奇这种功能是否支持。

提前致谢!

【问题讨论】:

    标签: python io console ascii stdout


    【解决方案1】:

    您可以通过打印特殊的转义序列来任意移动光标。请参阅here 以获取参考。

    【讨论】:

    • 这正是我正在寻找的,但我认为我使用的任何一个终端都不支持它。你有没有机会知道我在哪里可以找到更多关于在哪里支持的信息?
    • @136 不,抱歉,但我确信 Google 会为您提供答案。但是请务必先检查一下,因为您说您“认为”它不受支持。我尝试过的每个终端都适用于...
    猜你喜欢
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 2013-04-27
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多