2011-10-03 83 views
5

我正在編寫一個Python腳本來打印出可顯示的用戶界面。問題是每個Linux用戶都有自己獨特的終端大小。這將導致硬編碼的用戶界面走出格式。Linux終端顯示和Python

(如果下面有很多例子,終端看起來很瘋狂!!!)。

示例,在腳本中。我打印出來:

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

格式應遠遠在我的終端: +++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++

當終端較小,打印輸出格式將用完。 格式變成: ++++++++++++++++++++++++++++++++++++++++++++

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

所以我想:

  1. 當用戶運行腳本,我可以自動更改Linux終端大小爲我的聲明大小
  2. 我可以使用Python獲取用戶終端大小的寬度和長度,因此終端顯示屏可以靈活使用
  3. 我想聽任何BETT呃解決世界各地解決終端顯示問題!

我強烈希望建議在Python

+0

你可能想看看[這個問題](http://stackoverflow.com/questions/566746/how-to-get-console-window-width-in-python)。 –

+0

這個問題,得到終端的大小。最值得推薦的是什麼? (很可能,爲了將來編程的目的)獲取終端大小或調整它的大小? – Ezylryb

+0

獲取大小。您無法調整終端大小。(好吧,也許有些類型,但即使那時用戶也不會喜歡它) –

回答

8

我強烈建議使用類似Python標準庫的curses模塊來做到這一點。

不要重新發明輪子 - 使用現有的圖書館既可以幫助您避免角落案件,也可以節省您的時間。此外,curses界面對於* nix用戶來說是熟悉的,這將使他們更像你。

+0

嗯..有趣!那麼API自動更改終端大小還是獲取終端大小? – Ezylryb

+0

'curses'旨在與用戶現有的終端大小無關。 (大多數人不喜歡你強迫他們的終端進行調整,有些終端甚至不允許你調整他們的大小。) – Amber

+0

沒錯,真的!有些終端不能調整大小! – Ezylryb

1

由於建議使用Amber,所以應該使用類似curses的庫。

不過,你可以使用這樣的事情得到了終端的寬度:

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

酷!我會嘗試! – Ezylryb

0

基於對Amber's solution評論,還有就是看太在Windows上運行的解決方案的一些願望。一個簡單的跨平臺解決方案是使用asciimatics。例如:

from asciimatics.screen import Screen 

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

Screen.wrapper(demo) 

該軟件包還提供了一整套高級小部件,使全屏文本用戶界面更容易。示例請參見contact list demo

完全披露:是的 - 我是該軟件包的作者,因此可能有點偏頗。 :-)