2017-01-09 2 views
0

Я довольно новичок в проклятиях, так что извините за вопрос noob :) Я запускаю цикл while True:, который извлекает данные из API и представляет их с помощью функции show_header_and_footer(). Затем он спит в течение 3 секунд, чтобы избежать постоянного обновления и превышения предела API-провайдера.Python curses: получение данных из API и getch() в то же время

if __name__ == "__main__": 

    setup_curses() 

    while True: 
     catch_input() 
     show_header_and_footer() 
     stdscr.refresh() 
     header.refresh() 
     footer.refresh() 
     time.sleep(3) 

Как вы, наверное, заметили, есть также призыв к catch_input() функции, которая выглядит следующим образом:

def catch_input(): 
    c = stdscr.getch() 
    if c in (ord('q'), ord('Q')): 
     curses.raw() 
     curses.endwin() 

Все работает, но после нажатия «Q» мне придется ждать до конца time.sleep(3) , Как я могу улучшить это?

ответ

1

Примечание: Я предполагаю, что нажав «q'or'Q», вы покидаете приложение.

Если это так, почему бы не вернуть статус к основному из метода catch_input(). Используйте этот статус для возврата/выхода из цикла while (True). Таким образом, вы не столкнетесь с 3-секундным таймером.

catch_Input() метод:

def catch_input(): 
    c = stdscr.getch() 
    if c in (ord('q'), ord('Q')): 
     curses.raw() 
     curses.endwin() 
     return False 
    return True 

Основной метод():

if __name__ == "__main__": 

setup_curses() 

while True: 
    if not catch_input(): 
     break 
    show_header_and_footer() 
    stdscr.refresh() 
    header.refresh() 
    footer.refresh() 
    time.sleep(3) 
+0

Это не работает, ничего не изменилось – mrpapa

Смежные вопросы