我正在编写Python脚本以打印出可显示的用户界面。问题是每个Linux用户都有自己独特的终端大小。这将导致硬编码的用户界面过时。
(如果下面有很多示例,则终端看起来很疯狂!!)。
示例,在脚本中。我已经打印了:
print"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
格式应该在我的终端上运行良好:
++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++
当终端较小时,打印输出格式将用完。
格式变为:
++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++
所以我在想:
用户运行脚本时,可以自动将Linux终端大小更改为声明的大小吗?
我可以使用Python获取用户终端大小的宽度和长度,以便终端显示灵活
我想听听世界上任何更好的解决方案来解决终端显示问题!
我强烈希望在Python中推荐
您可能想看看这个问题。
这个问题,得到终端的大小。 最推荐什么? (很可能是为了将来的编程目的)获取终端大小还是调整大小?
获取大小。 您无法调整终端的大小。 (嗯,也许是某些类型,但是即使那样,用户也不会喜欢)
*喜欢* @Petr Viktorin评论
我强烈建议使用类似Python标准库的curses模块来执行此操作。
不要重新发明轮子-使用现有的库既可以帮助您避免遇到极端情况,也可以节省时间。 另外,curses界面是* nix用户熟悉的界面,它将使他们更喜欢您。
嗯..有趣! 那么API会自动更改终端大小还是获得终端大小?
curses旨在与用户现有终端大小无关。 (大多数人不喜欢您强迫他们调整终端的大小,有些终端甚至不允许您调整他们的大小。)
对,对! 某些终端无法调整大小!
诅咒在Windows命令提示符中也起作用吗?
可悲的是,没有(至少默认情况下)。 如手册页顶部所述,其"平台:Unix"。
啧! 以为我可以用石头杀死两只鸟! = P
感谢您的推荐@Amber。 我会测试一下!^ _ ^
正如Amber建议的那样,您应该使用类似curses的库。
尽管如此,您仍然可以使用以下方式获取终端的宽度:
import subprocess
int(subprocess.Popen(['tput', 'cols'], stdout=subprocess.PIPE).stdout.read())
凉! 我会试试!
基于Amber解决方案中的评论,人们希望看到一种同样适用于Windows的解决方案。 一个简单的跨平台解决方案是使用asciimatics。 例如:
from asciimatics.screen import Screen
def demo(screen):
screen.print_at('+' * screen.width, 0, 0)
screen.refresh()
sleep(10)
Screen.wrapper(demo)
该软件包还提供了更高级别的小部件的全部负载,以简化全屏文本UI。 有关示例,请参见联系人列表演示。
完全公开:是的-我是该软件包的作者,因此可能会有些偏颇。:-)