Linux终端显示与Python
我正在写一个Python脚本,用来打印出可以显示的用户界面。问题是每个Linux用户的终端大小都不一样,这样的话我写死的用户界面就会变得不合适。
(如果下面有很多例子,终端看起来会很疯狂!)
比如,在我的脚本中,我打印出来的内容是:
print "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
在我的终端中,格式应该是这样的:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
但是当终端变小的时候,打印出来的格式就会乱掉。
格式变成:
++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++
所以我在想:
- 当用户运行这个脚本时,我能不能自动把Linux终端的大小改成我设定的大小?
- 我能不能用Python获取用户终端的宽度和长度,这样终端显示就可以更灵活?
- 我想听听世界上有没有更好的解决方案来解决终端显示的问题!
我特别希望能得到Python方面的建议。
3 个回答
0
根据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)
这个包还提供了很多高级的组件,可以让全屏文本用户界面变得更简单。想看看例子的话,可以查看联系人列表演示。
坦白说:没错,我是这个包的作者,所以可能会有点偏心。:-)
8
我强烈建议你使用像Python标准库中的curses
模块来完成这个任务。
别自己重新发明轮子——使用现成的库可以帮你避免一些特殊情况,还能节省时间。而且,curses这个界面对使用*nix系统的人来说很熟悉,这样他们会更喜欢你。