根据输入显示不同的字符串

时间:2018-06-23 21:29:13

标签: python curses python-curses

我一直在尝试使此脚本按预期工作,但这样做存在一些问题。我试图根据变量pageCount更改屏幕上显示的字符串,但到目前为止遇到了2个问题。

我希望在getkey()等待按键之前打印第一个字符串(第1页),但是我似乎无法实现。当在屏幕上打印新字符串时,我也无法正确刷新/清除屏幕。

解决这些问题的最佳方法是什么?

from curses import wrapper


def main(stdscr):
# Clear screen


pageCount=0
#stdscr.addstr(str(pageCount))
stdscr.clear()
while True:

    key=stdscr.getkey()






    if key == "KEY_LEFT":

        pageCount=pageCount-1
    if key == "KEY_RIGHT":
        pageCount=pageCount+1

    if pageCount < 1:
        pageCount=10
    if pageCount > 10:
        pageCount=1

    if pageCount==1:
        stdscr.addstr("page 1")

    if pageCount==2:
        stdscr.addstr("page 2")

    if pageCount==3:
        stdscr.addstr("page 3")
    if pageCount==4:
        stdscr.addstr("page 4")
    if pageCount==5:
        stdscr.addstr("page 5")
    if pageCount==6:
        stdscr.addstr("page 6")
    if pageCount==7:
        stdscr.addstr("page 7")
    if pageCount==8:
        stdscr.addstr("page 8")
    if pageCount==9:
        stdscr.addstr("page 9")
    if pageCount==10:
        stdscr.addstr("page 10")

    stdscr.refresh()




wrapper(main)

1 个答案:

答案 0 :(得分:0)

只需在getkey()之前打印页面名称即可解决您的问题。您实际上可以使用页面作为字符串中的变量来简化代码,从而避免使用ifs套件。像这样吗?

from curses import wrapper

def main(stdscr):
    # Clear screen
    pageCount=1
    #stdscr.addstr(str(pageCount))
    stdscr.clear()
    while True:

        stdscr.addstr("page %d"%(pageCount))

        key=stdscr.getkey()
        if key == "KEY_LEFT":
            pageCount=pageCount-1
        if key == "KEY_RIGHT":
            pageCount=pageCount+1
        if pageCount < 1:
            pageCount=10
        if pageCount > 10:
            pageCount=1

        stdscr.refresh()

wrapper(main)