【问题标题】:How to move pad correctly?如何正确移动焊盘?
【发布时间】:2012-03-09 11:42:21
【问题描述】:
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 有多大,文本都将保留在第一行。我错过了什么?

【问题讨论】:

    标签: python ncurses


    【解决方案1】:

    检查上/下箭头的值,并将它们与curses.KEY_UP/DOWN 进行比较。见My cursor keys do not work

    例如,key-up 在我的终端上返回 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().

    【讨论】:

    • 感谢您提供这种优雅的方法来获取 ESCAPE 键码。
    猜你喜欢
    • 2014-09-02
    • 2012-08-13
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    相关资源
    最近更新 更多