使用按键更改焦点

时间:2018-03-28 19:12:59

标签: python python-3.x urwid

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

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

我找到了焦点位置'功能内部'按键'。我很难使用此功能将焦点更改为所需位置。

参考: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 个答案:

答案 0 :(得分: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

以上代码正常运行。谢谢。