簡體   English   中英

使用curses實時顯示字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM