4

数字のリストを表示し、現在フォーカスのある項目を強調表示する次のコード スニペットがあります。

import urwid

palette = [('header', 'white', 'black'),
    ('reveal focus', 'black', 'dark cyan', 'standout'),]

items = map(lambda x: urwid.Text(`x`), range(500))
items = map(lambda x: urwid.AttrMap(x, None, 'reveal focus'), items)

walker = urwid.SimpleListWalker(items)
listbox = urwid.ListBox(walker)

loop = urwid.MainLoop(listbox, palette)
loop.run()

プログラムを起動すると、端末は次のようになります。

0   <-- highlighted
1
2
3
...

ボタンを押すdownと、ビューが次のように変わります。

1
2
3
4   <-- highlighted
...

0-3画面が下にスクロールする前に、強調表示されてフォーカスが合っている動作が欲しいです。これを達成するための最良の方法は何ですか?

4

2 に答える 2

3

受け入れられた解決策は、最初のキーを押すと失敗します。

AttributeError: 'SelectableText' object has no attribute 'keypress'

何もしない独自の実装を挿入すると、エラーは解消されますが、すべてのキーバインドが完全に無効になります。

私はこれを見つけました、そしてそれはうまくいくようです:

class SelectableText(urwid.Edit):
    def valid_char(self, ch):
        return False
于 2016-02-14T13:09:49.333 に答える