0

yml フォーム ファイルを読み込んで、その内容を urwid の列として取得しています。これらの列をコンソールに表示する必要があります。プレーンなリストボックスとリストウォーカーを使用すると、画面に表示される列を取得できます。ただし、いくつかの列をブロックとしてグループ化し、それをラインボックス ウィジェットに表示する必要があります。どうすればそうできますか?

私の列ウィジェットにはそれぞれ 2 つの列があり、最初の列はテキスト ウィジェットで、2 番目の列は編集ウィジェットです。これは私が試したものです:

  1. 以下のように、blockPile (blockPile = urwid.Pile([ ]) として宣言) という名前のパイルに追加することにより、列のパイルを作成しようとしました:
    blockPile.contents.append(columnEntry, options='pack')

    しかし、このエラーが発生しました

    TypeError: append() got an unexpected keyword argument 'options'

  2. 次にオプションを削除し、これを使用しました:

    blockPile.contents.append(columnEntry)

    しかし、次のエラーが発生しました

    urwid.container.PileError: added content invalid: <Columns selectable box/flow widget>

  3. 次にリストボックスを使用しました

    blockContent = urwid.SimpleListWalker([])
    blockListbox = urwid.ListBox(blockContent)

    リストボックス内の列に合わせて追加を使用しました
    blockContent.append(columnEntry)

    最後にリストボックスをボックスアダプターに入れる

    box = urwid.BoxAdapter(blockContent, height = 20)

    そしてそれをラインボックスに返します
    return urwid.LineBox(box, title='|** Block **|')

    しかし、今は次のエラーが発生します
    AttributeError: 'SimpleListWalker' object has no attribute 'selectable'

リストボックスとリストウォーカーのみを使用し、リストボックスを他のものに合わせない場合、すべてが正常に機能します。しかし、列のリストボックスをラインボックスに入れたいです。どうすればそうできますか?

4

1 に答える 1

0

urwid で遊んでから長い時間が経ちましたが、urwid では、一連の要素を listWalker のように動作させるには、選択可能な属性を設定する必要があると思います。

この古いコード では: https://github.com/Nic0/tyrs/blob/master/src/tyrs/widget.py#L95ツイッターのステータス。

def selectable (self):
    return True

とにかく、アイデアを提供するためにコードが必要になる場合があります。それが役に立てば幸い。

于 2013-08-03T06:55:16.997 に答える