如何解决urwid使文本“自动滚动”
我目前正在尝试为树莓派上的can bus测试构建一些ui。 它基本上很容易构建,因为它只有一个主信息屏幕和一个输入文本。 我的问题是我找不到如何使输入文本自动滚动到最后发送的文本。
这就是我的小用户界面的创建方式。
# create ui
self.edit= urwid.Edit(caption="Input: ",edit_text='')
header = urwid.AttrWrap(urwid.Text('Barobo CAN Control Center (type \'help\' for help,F8 or \'quit\' for exit)'),'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_content))
self.frame = urwid.Frame(urwid.AttrWrap(listBox,'body'),header=header,footer=footer,focus_part='footer')
所以我现在需要的是使self.txt作为在那里绘制的最后一个文本的东西。甚至可以使它使用向上翻页和向下翻页键滚动。.
有什么提示吗? 编辑:我了解到我必须将文本作为小部件附加到listwalker。在我将文本添加到列表框中唯一的文本小部件之前
def log(self,message,level='info'):
'''
append a message to the message window
'''
if self.__loglevel >= Logdisplay.level.index(level):
txt = urwid.Text(message)
self.__walker.append(txt)
但是它仍然没有显示最后的项目。
解决方法
认为我找到了解决方法 urwid.ListBox具有set_focus函数,我要做的就是将它放在行者列表中的最后一个位置
self.listbox.set_focus(self.__walker.positions(True)[0])
可悲的是,滚动浏览它们仍然不起作用。
,您可以使用Tkinter还是简单的
self.see("end")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。