我正在尝试使用诅咒显示一些统计信息,但是我确实遇到了问题。
我想拥有一个可以通过键盘进行滚动的窗口。为此,我创建了一个变量self.scroll,它告诉我应该显示哪些行。问题是每当我按下KEY_DOWN时,我都想增加此变量。
这是我的代码: 在该类的初始化中,我确实有:
self.stdscr = stdscr
self.scroll = 0
stdscr.nodelay(1)
stdscr.keypad(1)
然后:
while True:
ch = self.stdscr.getch()
if ch == curses.KEY_DOWN:
self.scroll += 1
self.add_alert()
ch = None
elif ch == curses.KEY_UP:
if self.scroll >= 1:
self.scroll -= 1
self.add_alert()
ch = None
我还使用了一个here可以用来初始化所有内容的包装器。
事实是,无论如何,变量滚动都固定为0。此外,即使设置了noecho(),我也会看到每次按下的每个键(例如^ [[A])。 我使用了nodelay(),因为我的线程也正在处理某些事情,并且我不希望在等待按键时停止它。 您有什么想法吗?
非常感谢, 贾兹
答案 0 :(得分:0)
如果使用nodelay
,则会干扰keypad
。请使用timeout
并使用较短的超时值。 (超时时间为10毫秒对大多数人来说都适用)。
答案 1 :(得分:0)
最后,它从一开始就起作用。问题在于,出于某些奇怪的原因,curses未检测到KEY_UP和KEY_DOWN。我只是将它们替换为u和d
if ch == ord('p'):
一切正常。
谢谢大家!