[英]Displaying string in realtime using curses
我有一個字符串,打印時有300行長。 我的第一個想法是使用curses顯示字符串。 但是字符串在不斷變化,我也希望用戶能夠滾動瀏覽每一行。
例如,我有以下代碼...
from itertools import cycle
import curses, contextlib, time
@contextlib.contextmanager
def curses_screen():
"""Contextmanager's version of curses.wrapper()."""
try:
stdscr=curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(1)
try: curses.start_color()
except: pass
yield stdscr
finally:
stdscr.keypad(0)
curses.echo()
curses.nocbreak()
curses.endwin()
with curses_screen() as stdscr:
pad = curses.newpad(100, 100)
pad.addstr(0,0, curses.longname())
for i in range(1, 90):
pad.addstr(i,0, str(i))
coord = 5, 5, 10, 75
pad.refresh(0, 0, *coord)
KEY_UP, KEY_DOWN = 'AB'
y = 0
for c in iter(pad.getkey, 'q'):
if c in '\x1b\x5b': continue # skip escape seq
y -= (c == KEY_UP)
y += (c == KEY_DOWN)
y = min(max(y, 0), 10)
pad.refresh(y, 0, *coord)
但是,如果在這種情況下需要將字符串顯示為
for i in range(11, 99):
print i
我將如何更新護墊?
顯而易見的答案是,您用新文本更新了填充板,就像處理原始文本一樣:
pad.erase()
for (py, i) in enumerate(range(1, 90), 1):
pad.addstr(py, 0, str(i))
pad.refresh(y, 0, *coord)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.