无法获得诅咒的钥匙

时间:2018-10-08 07:55:46

标签: python python-3.x listener curses

我正在尝试使用诅咒显示一些统计信息,但是我确实遇到了问题。

我想拥有一个可以通过键盘进行滚动的窗口。为此,我创建了一个变量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(),因为我的线程也正在处理某些事情,并且我不希望在等待按键时停止它。 您有什么想法吗?

非常感谢, 贾兹

2 个答案:

答案 0 :(得分:0)

如果使用nodelay,则会干扰keypad。请使用timeout并使用较短的超时值。 (超时时间为10毫秒对大多数人来说都适用)。

答案 1 :(得分:0)

最后,它从一开始就起作用。问题在于,出于某些奇怪的原因,curses未检测到KEY_UP和KEY_DOWN。我只是将它们替换为u和d

if ch == ord('p'):

一切正常。

谢谢大家!