Не могу получить ключ с проклятиями - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь использовать проклятия для отображения статистики, и я сталкиваюсь с проблемой.

Я хотел, чтобы у меня было окно, которое позволяло бы прокручиваться благодаря клавиатуре.Для этого я создаю переменную 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

Я также использовал оболочку, которую можно найти здесь для инициализации всего.

Дело в том, что переменная scroll застряла в 0, несмотря ни на что.Более того, я вижу каждую клавишу, которую нажимаю (например, ^ [[A) всякий раз, когда я нажимаю ее, даже если установлено noecho ().Я использовал nodelay (), потому что мой поток также обрабатывает некоторые вещи, и я не хочу, чтобы он был остановлен во время ожидания нажатия клавиши.У вас есть идеи, откуда это может прийти?

Большое спасибо, Джаз

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Наконец-то все заработало с самого начала.Проблема была только в том, что по каким-то странным причинам проклятия не обнаруживали KEY_UP и KEY_DOWN.Я просто заменил их на u и d

if ch == ord('p'):

и все работает нормально.

Спасибо всем!

0 голосов
/ 08 октября 2018

Если вы используете nodelay, это мешает keypad.Вместо этого используйте timeout с коротким значением времени ожидания.(10 миллисекунд для таймаута будут работать для большинства людей).

...