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有多大,文本都将保留在第一行。我想念什么?
最佳答案
检查上/下箭头获得什么值,并将它们与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()
。关于python - 如何正确移动护垫?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9633479/