从长按键中获取一个字符 python curses [accepted]

Get just one char from long keypress python curses [accepted]

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

通常可以通过

解决这个问题
  1. 设置一个变量来记录一个字符被读取的事实
  2. 读字符
  3. 如果没有字符可用(例如在超时内),请停止阅读
  4. 如果还没有字符被读取,记录一个被读取的事实(以及记住哪个字符)
  5. 返回第 2 步,重新阅读

简单地从终端读取不会导致 curses 做额外的工作(无论如何它会在每次读取时刷新)。只有当您的程序修改了屏幕时,它才会起作用。所以(假设你关闭了echo),就不用担心refresh.

的调用次数了

关于评论 "it has to clear and refresh the box":有选择(根据文档):

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

避免使用 window.clear() 除非你打算重新粉刷整个 window,因为它要慢得多,并且会分散视觉注意力。

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