Изменить фокус с помощью нажатия клавиши

Мне нужно реализовать функцию с URWID, где, если я нажимаю клавишу, скажем c, фокус должен опуститься до самой нижней точки на этой странице. Здесь страница не что иное, как ListBox, Этот ListBox слишком длинный, чтобы с ним можно было работать, используя клавиши " вниз" или " вниз" (представьте себе, что это страница, где требуется много времени, чтобы перейти к самому нижнему краю страницы, если в нем много строк)

1) Я мог получить доступ к нажатой клавише, используя "нажатие клавиши". После доступа к ключу, как изменить фокус?

Я нашел функцию focus_position внутри нажатия клавиш. Мне трудно использовать эту функцию для изменения фокуса на требуемую позицию.

Ссылка: http://urwid.org/reference/widget.html

РЕДАКТИРОВАТЬ:

Я попробовал следующий код. Но это не работает.

if key is "c":
        position = self.focus_position
        self.focus_position = position + 10

РЕДАКТИРОВАТЬ 2:

def keypress(self, size, key):
    key = super(MyListBox, self).keypress(size, key)
    if key is "c":
        pos = self.focus_position
        if pos > 100:
           pos = 0
           self.focus_position = 0
        self.focus_position = pos + 5

Проблема с приведенным выше кодом, это не является стабильным. Завершение программы после многократного нажатия клавиши "c" с сообщением "Нет виджета в позиции xxx".

Мысли?

1 ответ

class MyListBox(urwid.ListBox):
   def keypress(self, size, key):
     if key == 'u':
        self.set_focus(0)
        key = None
     elif key == 'd':
        self.set_focus(len(self.body) - 1)
        key = None
     return key

Выше код работает правильно. Благодарю.

Другие вопросы по тегам