2016-11-18 51 views
0

我想用curses在控制檯的多列中打印數據。這樣做的簡單方法是什麼?如何使用curses輕鬆顯示控制檯中的多列?

目前,我的應用程序將打印信息是這樣的:

import curses 
(...) 
# create default screen 
std_scr = curses.initscr() 
(...) 
# example 
for line in lines: 
    std_scr.addstr(line + "\n") 
std_scr.refresh() 

這將導致下面的輸出

line 1 
line 2 
... 
line n 

不過,我想什麼都有,是這樣的:

columns = 3 
for line in lines: 
    # easy way to separate columns 

應該導致:

line 1   | line 11   | line 21 
line 2   | line 12   | line 22 
...   | ...    | ... 
line 10  | line 20   | line 30 

什麼是實現此目的的簡單方法?我應該簡單地用一個迭代的順序來遍歷像line 1line 11line 21line 2line 12line 22line 3,等等,同時採用line.ljust(30, " ")得到空格?

或者我應該在curses中創建多個屏幕?

還有其他更簡單的解決方案嗎?

我對curses很新,因此任何一般的建議+例子都會很棒。

回答

0

我會使用std_scr.getmaxyx來獲得屏幕尺寸,並將屏幕寬度除以列數。此外,從迭代器的極限值中獲取每列中的行數。使用addnstr來打印消息(並根據示例中的列數和行數計算每個調用的y,x座標對爲addnstr)。

相關問題