首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >urwid使文本“自动滚动”

urwid使文本“自动滚动”
EN

Stack Overflow用户
提问于 2020-09-12 19:46:51
回答 2查看 153关注 0票数 0

我目前正在尝试建立一个小的用户界面的can总线测试的树莓派。它基本上很容易构建,因为它只有一个主信息屏幕和一个输入文本。我的问题是我找不到如何让输入的文本自动滚动到最后发送的文本。

这就是我的小ui是如何创建的。

代码语言:javascript
复制
        # 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。在我将文本添加到列表框中唯一的文本小部件之前

代码语言:javascript
复制
    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)

但是它仍然不能显示最后一项..

EN

回答 2

Stack Overflow用户

发布于 2020-09-13 16:43:57

我想我已经找到了一个解决方案,urwid.ListBox有一个函数set_focus,我所要做的就是把它放在我的walker列表中的最后一个位置

代码语言:javascript
复制
            self.listbox.set_focus(self.__walker.positions(True)[0])

可悲的是,滚动它们仍然不起作用..

票数 1
EN

Stack Overflow用户

发布于 2020-09-12 19:54:28

你能使用Tkinter吗?那么它就会很简单

代码语言:javascript
复制
self.see("end")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63859985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档