3

我的代码如下所示:

stdscr.nodelay(1)
while True:
    c = stdscr.getch()
    if c != -1:
        stdscr.addstr("%s was pressed\n" % c)
    if time() - last > 1:
        stdscr.addstr("time() == %s\n" % str(time()))
        last = time()

但是,我担心我的代码真的很浪费/效率低下。是否有可用于诅咒的回调机制?如果不是,那么处理这种情况的规范方法是什么?

4

2 回答 2

5

你可以试试Urwid

Urwid 在 curses 之上提供了一个更高级别的工具包,并包括一个事件循环来处理键盘和鼠标输入。它要么使用自己的基于选择的事件循环,要么可以挂接到 gevent 或 Twisted。

除了有效地处理键盘输入之外,您还可以使用许多选项来处理带有编辑框、列表控件等的用户输入。

于 2012-05-29T11:55:44.170 回答
2

使用半延迟模式使 getch() 阻塞怎么样?

import time
import curses

stdscr = curses.initscr()
curses.halfdelay(10) # 10/10 = 1[s] inteval

try:
    while True:
        c = stdscr.getch()
        if c != -1:
            stdscr.addstr("%s was pressed\n" % c)
        stdscr.addstr("time() == %s\n" % time.time())
finally:
    curses.endwin()
于 2012-05-29T12:02:40.597 回答