Как правильно двигать площадку? - PullRequest
1 голос
/ 09 марта 2012
r = 0
mypad.addstr(0, 0, "Test...")

while 1:
    mypad.refresh(r, 0, 1, 1, 10, 10)
    c = mypad.getch()

    if c == curses.KEY_UP:
        r -= 1
    elif c == curses.KEY_DOWN:
        r += 1
    elif c == ord('q'): break 

Test... отображается, но когда я нажимаю вверх / вниз, он просто исчезает.

Обновление:

на самом деле при добавлении большего количества строк я обнаружил, что он прокручивается, но только вверх, а не ниже начальной позиции.Независимо от того, насколько большим будет r, текст останется в первом ряду.Чего мне не хватает?

1 Ответ

2 голосов
/ 10 марта 2012

Проверьте, какие значения вы получаете для стрелок вверх / вниз, и сравните их с curses.KEY_UP/DOWN. См. Мои клавиши курсора не работают .

Например, при возврате ключа на моем терминале отображается 3 символа:

import curses

with curses_screen() as stdscr:
    pad = curses.newpad(100, 100)
    pad.addstr(0,0, curses.longname())
    for i in range(1, 10):
        pad.addstr(i,0, str(i))

    coord = 5, 5, 20, 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), 9)
        pad.refresh(y, 0, *coord)

Определение curses_screen().

...