Я пытался заставить этот скрипт работать так, как задумано, но при этом у меня возникли некоторые проблемы. Я пытаюсь изменить строку, отображаемую на экране, в зависимости от переменной pageCount, но пока столкнулся с двумя проблемами.
Я хотел бы, чтобы первая строка (page1) была напечатана перед нажатием клавиши, которого ожидает getkey (), но я не могу этого добиться. Я также не могу заставить экран обновляться / очищаться должным образом, когда на экране печатается новая строка.
Как лучше всего решить эти проблемы?
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)






Просто напечатайте имя страницы до того, как getkey () решит вашу проблему. Вы можете действительно упростить свой код, используя свою страницу в качестве переменной в строке, чтобы избежать этого набора if. Что-то вроде этого?
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)