Изменить фокус с помощью нажатия клавиши
Мне нужно реализовать функцию с 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
Выше код работает правильно. Благодарю.