Python curses:同时从API和getch()获取数据

时间:2017-01-09 16:33:09

标签: python curses

我对诅咒很陌生,所以对于一个noob问题抱歉:)我运行while True:循环,它从API获取数据并使用函数show_header_and_footer()显示它们。然后它会休眠3秒以避免持续刷新并超出API提供者限制。

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 个答案:

答案 0 :(得分:1)

注意:我认为通过按q'或' Q',您将退出该应用程序。

如果确实如此,为什么不从catch_input()方法向main返回状态。使用此状态可以从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)