def on_key(self, ch):
if not self.items:
return False
if ch == curses.KEY_UP:
if self.selected == 0:
return False
self.selected -= 1
# Selection is outside view, scroll up
if self.selected - self.offset < 0:
self.offset = self.selected
elif ch == curses.KEY_DOWN:
if self.selected == len(self.items) - 1:
return False
self.selected += 1
# Selection is outside view, scroll down
if self.selected - self.offset >= self.h:
self.offset = self.selected - self.h + 1
elif ch == curses.KEY_HOME:
self.selected = 0
self.offset = 0
elif ch == curses.KEY_END:
self.selected = len(self.items) - 1
self.offset = max(0, self.selected - self.h + 1)
elif ch == curses.KEY_ENTER:
key, title, action = self.items[self.selected]
self.select(key)
return True # no update necessary
else:
return False
self.update()
return True
评论列表
文章目录