我目前正在尝试建立一个小的用户界面的can总线测试的树莓派。它基本上很容易构建,因为它只有一个主信息屏幕和一个输入文本。我的问题是我找不到如何让输入的文本自动滚动到最后发送的文本。
这就是我的小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成为在那里绘制的最后一个文本。或者甚至可以使用page up和page down键滚动。
有什么提示吗?编辑:我已经了解到我必须将文本作为小部件附加到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)但是它仍然不能显示最后一项..
发布于 2020-09-13 16:43:57
我想我已经找到了一个解决方案,urwid.ListBox有一个函数set_focus,我所要做的就是把它放在我的walker列表中的最后一个位置
self.listbox.set_focus(self.__walker.positions(True)[0])可悲的是,滚动它们仍然不起作用..
发布于 2020-09-12 19:54:28
你能使用Tkinter吗?那么它就会很简单
self.see("end")https://stackoverflow.com/questions/63859985
复制相似问题