从长按键中获取一个字符 python curses [accepted]
Get just one char from long keypress python curses [accepted]
您好,我正在 python curses 中编写程序,我需要从长按键中获取一个字符。 (换句话说,我需要的是,如果我一直按下一个键,我的程序只需要使用函数 getchar() 获取字符一次)。
我需要它,因为我想防止诅咒多次刷新 windows。
我没有给出代码,因为它是意大利语,而且很长。
谢谢。
通常可以通过
解决这个问题
- 设置一个变量来记录一个字符被读取的事实
- 读字符
- 如果没有字符可用(例如在超时内),请停止阅读
- 如果还没有字符被读取,记录一个被读取的事实(以及记住哪个字符)
- 返回第 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 一起正常工作。
您好,我正在 python curses 中编写程序,我需要从长按键中获取一个字符。 (换句话说,我需要的是,如果我一直按下一个键,我的程序只需要使用函数 getchar() 获取字符一次)。 我需要它,因为我想防止诅咒多次刷新 windows。 我没有给出代码,因为它是意大利语,而且很长。 谢谢。
通常可以通过
解决这个问题- 设置一个变量来记录一个字符被读取的事实
- 读字符
- 如果没有字符可用(例如在超时内),请停止阅读
- 如果还没有字符被读取,记录一个被读取的事实(以及记住哪个字符)
- 返回第 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 一起正常工作。