0

我需要使用 URWID 实现一个功能,如果我按下一个键,比如说c,焦点应该会下降到该页面的最底部。在这里, page 只不过是一个ListBox. 这个'ListBox'太长了,不能用downpage down键来操作(把它想象成一个页面,如果它有很多行,它需要很长时间才能到达页面的最底部)

1)我可以使用'keypress'访问按下的键。访问密钥后,如何改变焦点?

我在“keypress”中找到了“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 处没有小部件”后,它会终止程序。

想法?

4

1 回答 1

0
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

上面的代码工作正常。谢谢。

于 2018-05-18T14:28:02.133 回答