从长按键python curses中获取一个char [已接受]

时间:2015-05-31 12:57:05

标签: python keypress ncurses curses getchar

您好我正在使用python curses编写程序,我需要从长按键中获取一个字符。 (换句话说,我需要的是,如果我一直按下一个键,我的程序只需要使用函数getchar()获取char一次)。 我需要这个,因为我想防止诅咒刷新窗户很多次。 我没有给出代码,因为它是意大利语,而且很长。 谢谢。

1 个答案:

答案 0 :(得分:0)

通常可以通过

解决这个问题
  1. 设置一个记录读取字符的变量
  2. 阅读角色
  3. 如果没有可用的字符(例如,在超时范围内),请停止阅读
  4. 如果尚未读取任何字符,请记录读取一个字符的事实(以及记住哪个字符)
  5. 返回第2步,再读一遍
  6. 简单地从终端读取不会导致curses做额外的工作(无论如何都会刷新每次读取)。如果你的程序修改了屏幕,它只会有工作要做。因此(假设您已关闭echo),无需担心拨打refresh的次数。

    关于评论"它必须清除并刷新框":有选择(每个文档):

    • window.erase()清除窗口,但
    • window.clear()与erase()类似,但在下次调用refresh()时也会导致整个窗口重新绘制

    避免使用 window.clear(),除非您打算重新绘制整个窗口,因为它更慢,并且在视觉上分散注意力。

    顺便说一句,curses函数名为getch,而不是getchar。后者可能无法与诅咒一起正常工作。