主要问题...
我想知道(希望)有一种方法可以管理控制台输出以允许高级打印实用程序。
具体来说,我想知道是否有办法将下一个字符将打印到下一个字符空间的"光标"移动到下一个字符空间,而不会覆盖跳过的空间中的字符。
我希望有一个解决方案不涉及安装新模块或跟踪标准输出历史记录。
灵感 - 回车角色
我知道回车符 ('\r') 可用于将控制台输出的"光标"移回行首。
从那里,我知道您可以打印任何您想要覆盖的字符数,就像您在 stdout 中输入的字符一样多,留下以前输出的剩余字符。
但是,我想在左侧保留以前字符中的 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
我知道我可以避免这个问题...
如果我满足于将动态行内容放在左侧,将静态内容放在右侧,只要事先知道/限制动态内容的宽度,我就可以安全地更新行而不会丢失静态内容。 出于样式原因,我不想要这个。
我知道我可以设置一些系统来跟踪已经打印的内容,并重新打印它以维护静态内容。 我不想要这个,因为我正在处理的东西有很多并发性,对于图形效果来说,这样做会很乏味。
我也只是好奇是否支持这种功能。
提前感谢!
您可以通过打印特殊的转义序列来任意移动光标。请参阅此处以获取参考。