开发者

Linux Terminal Display and Python

I am writing a Python script to print out displayable user interface. The problem is every Linux user would have their own unique terminal size. This will cause the hard-coded user interface to go out of format.

(If there is a lot of example below, the terminal looks Crazy!!!).

Example, in the script. I have print out:

print "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"

Format should goes well in my terminal: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

When the terminal is smaller, the 开发者_Python百科print out format will run out. Format become: ++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++

So I am thinking:

  1. When the user run the script, can I auto change the Linux terminal size to my declare size
  2. Can I get the Width and Length of the user terminal size using Python, so the terminal display can be flexible
  3. I would like to hear any better solution around the world to solve the terminal display problem!

I would strongly prefer recommendation in Python


I'd highly suggest using something like the Python Standard Library's curses module to do this.

Don't reinvent the wheel - using an existing library will both help you avoid corner cases and also save you time. Plus, the curses interface is a familiar one to *nix users, which will make them like you more.


As Amber suggested, you should use a library like curses.

Still, you could get the width of the terminal using something like this:

import subprocess
int(subprocess.Popen(['tput', 'cols'], stdout=subprocess.PIPE).stdout.read())


Based on the comments in Amber's solution, there is some desire to see a solution that works on Windows too. A simple cross platform solution is to use asciimatics. For example:

from asciimatics.screen import Screen

def demo(screen):
    screen.print_at('+' * screen.width, 0, 0)
    screen.refresh()
    sleep(10)

Screen.wrapper(demo)

This package also provides a whole load of higher level widgets to make full screen text UIs easier. See the contact list demo for an example.

Full disclosure: yes - I am the author of that package and so might be a little biased. :-)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜