2012-03-09 2 views
1
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이 되더라도 텍스트는 첫 번째 행에 머물러있게됩니다. 내가 뭘 놓치고 있니?

답변

2

위/아래 화살표 값을 확인하고이를 curses.KEY_UP/DOWN과 비교해보십시오. My cursor keys do not work을 참조하십시오. 내 터미널 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) 

Definition of curses_screen().

+0

우아한 방법으로 ESCAPE 키 코드를 가져 주셔서 감사합니다. –

관련 문제