为什么这个简单的“hello world”Urwid 代码会失败?

问题描述

我有一个超级简单的程序,它使用 Urwid 来实现基于文本的 UI:

import urwid


title = urwid.Text('Test')

pile = urwid.Pile([
    title,])

body = urwid.Frame(pile)

urwid.MainLoop(body).run()

但是,当我运行它时,出现如下错误

/home/user/anaconda3/envs/torch-env/bin/python /home/user/Work/market-maker/test.py
Traceback (most recent call last):
  File "/home/user/Work/market-maker/test.py",line 97,in <module>
    urwid.MainLoop(body).run()
  File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/main_loop.py",line 287,in run
    self._run()
  File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/main_loop.py",line 385,in _run
    self.event_loop.run()
  File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/main_loop.py",line 790,in run
    self._loop()
  File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/main_loop.py",line 818,in _loop
    self._entering_idle()
  File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/main_loop.py",line 779,in _entering_idle
    callback()
  File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/main_loop.py",line 574,in entering_idle
    self.draw_screen()
  File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/main_loop.py",line 588,in draw_screen
    canvas = self._topmost_widget.render(self.screen_size,focus=True)
  File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/widget.py",line 145,in cached_render
    canv = fn(self,size,focus=focus)
  File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/container.py",line 1089,in render
    body = self.body.render((maxcol,maxrow-ftrim-htrim),File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/widget.py",line 1565,in render
    canv = w.render((maxcol,rows),focus=focus and item_focus)
  File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/widget.py",focus=focus)
  File "/home/user/anaconda3/envs/torch-env/lib/python3.8/site-packages/urwid/widget.py",line 1001,in render
    (maxcol,) = size
ValueError: too many values to unpack (expected 1)

Process finished with exit code 1

这是为什么?我错过了什么?

解决方法

我设法通过将其放入 Filler 对象中来使其工作

import urwid
title = urwid.Text('Test')
pile = urwid.Pile([
    title
])
body = urwid.Filler(pile)
loop = urwid.MainLoop(body)
loop.run()