出力ファイルを読み取り、その内容の一部をスクロール可能なリストとしてウィンドウ (垂直に分割) に表示するコンソール アプリケーションの一部としてインターフェイスを構築しようとしています。ユーザーは、このリストからアイテムを選択できる必要があります。選択すると、隣接するウィンドウに表示されます。この隣接するウィンドウに切り替えてアイテムを選択すると、それらが削除されます。ユーザーが「Q」またはその他の適切なキーを押すと、インターフェイスが終了し、メイン プログラムが選択内容を使用してさらに処理できるようになります。
私はurwidを使ってこれを構築しようとしています。結果を ListBox ウィジェットに表示することはできますが、これと ListBox ウィジェットの別のインスタンスを Columns ウィジェットにラップしようとすると、メインループの呼び出し時にプログラムがエラーをスローします。基本的には、次のようなものです。
listbox1 = urwid.ListBox(urwid.SimpleListWalker[<lines>])
listbox2 = urwid.ListBox(urwid.SimpleListWalker[])
urwid.MainLoop(urwid.Columns([listbox1, listbox2])).run()
私はそれから得ます:
AttributeError: 'listbox1' オブジェクトには属性 'rows' がありません
「フロー」スタイルのウィジェットであるため、指定された行数がなく、Columns オブジェクトが最上位のウィジェットになるため、画面全体のサイズを判断できないためにレンダリングの呼び出しが失敗すると思いますか? もしそうなら、これを回避する最善の方法は何ですか?
編集:ヘッダーまたはフッターを呼び出さずに、列オブジェクトをフレームにラップするだけで、目的の出力を取得できます。