Python urwid生成文本';自动滚动';向下

Python urwid生成文本';自动滚动';向下,python,urwid,Python,Urwid,我目前正在尝试在raspberry pi上为can总线测试构建一个小ui。 它基本上非常容易构建,因为它只有一个主信息屏幕和一个输入文本。 我的问题是,我找不到如何使输入文本自动滚动到最后发送的文本 这就是我的微型用户界面的创建方式 #创建用户界面 self.edit=urwid.edit(标题=“输入:”,编辑文本=“”) header=urwid.AttrWrap(urwid.Text('Barobo CAN Control Center(键入'help\'获取帮助,键入F8或'quit\'

我目前正在尝试在raspberry pi上为can总线测试构建一个小ui。 它基本上非常容易构建,因为它只有一个主信息屏幕和一个输入文本。 我的问题是,我找不到如何使输入文本自动滚动到最后发送的文本

这就是我的微型用户界面的创建方式

#创建用户界面
self.edit=urwid.edit(标题=“输入:”,编辑文本=“”)
header=urwid.AttrWrap(urwid.Text('Barobo CAN Control Center(键入'help\'获取帮助,键入F8或'quit\'退出)”),'header')
footer=urwid.AttrWrap(urwid.AttrWrap(self.edit,'editbx'),'footer')
self.txt=urwid.Text(“”)
listbox_content=[self.txt,valign='bottom']
listbox=urwid.listbox(urwid.SimpleListWalker(listbox\u内容))
self.frame=urwid.frame(urwid.AttrWrap(listbox,'body'),header=header,footer=footer,focus\u part='footer')
所以我现在需要的是使self.txt成为最后一个在那里绘制的文本。。甚至可以使用page up和page down键使其可滚动

有什么提示吗? 编辑:我了解到我必须将文本作为小部件附加到listwalker。在我刚刚将文本添加到列表框中唯一的文本小部件之前

def日志(self,message,level='info'):
'''
将消息附加到消息窗口
'''
如果self.\uu loglevel>=LogDisplay.level.index(级别):
txt=urwid.Text(消息)
self.\uu walker.append(txt)

但是它仍然没有显示最后的项目。

你能用Tkinter吗?那么它就这么简单了

self.see("end")

我想我已经找到了解决办法 ListBox有一个函数集_focus,我所要做的就是在我的walker列表中给它最后一个位置

self.listbox.set\u焦点(self.\u walker.positions(True)[0])

遗憾的是,滚动它们仍然不起作用。

如果我可以使用图形用户界面,我真的更喜欢它。urwid是基于诅咒的,因此仅限于控制台。