我正試圖編寫一個函數,它將在Python控制檯中運行時生成一個簡單的小部件。這個小部件應該能夠識別終端大小。顯示小部件後,我將等待用戶的鍵盤輸入並根據類型調整內容。我現在所面臨的困難是如何在用戶調整終端的大小時使該小部件調整其顯示器。下面的代碼的簡化版本,我現在所擁有的:如何適應輸出到不斷變化的終端寬度
def test():
import blessed
import signal
def draw():
n = term.width - 3
print("+" + "=" * n + "+" + term.clear_eol)
print("|" + " " * (n//2 - 2) +
"TEST" + " " * (n - n//2 - 2) + "|" + term.clear_eol)
print("+" + "=" * n + "+" + term.clear_eol)
def redraw(_, __):
print(term.move_up * 3, end="")
draw()
term = blessed.Terminal()
draw()
signal.signal(signal.SIGWINCH, redraw)
with term.cbreak():
term.inkey()
這如果用戶展開的終端,或者如果他縮小了終端,但速度很慢(1個字符在一個時間)工作正常。但是,儘快縮短終端寬度將導致長行換行,從而破壞輸出。有沒有辦法解決這個問題?
[如何獲得控制檯窗口寬度在python]可能的副本(http://stackoverflow.com/questions/566746/how-to-get-console-window-width-in-python) – nir0s