标签的 Kivy ScrollView 不会滚动

Posted

技术标签:

【中文标题】标签的 Kivy ScrollView 不会滚动【英文标题】:Kivy ScrollView of Label won't scroll 【发布时间】:2018-07-29 22:57:09 【问题描述】:

我在一个ScrollView里面有一个Label,希望当(多行)文本占用太多行时,用户可以上下滚动,当行太长时,用户可以左右滚动。我无法让它滚动。这是我的 Builder 字符串的相关部分:

ScrollView:
    id: scrollLayout
    size_hint_y: 0.9
    Label:
        id: sortFilesDisplay
        size_hint_y: 0.9
        text: 'Drag\\n in\\n files\\n to\\n be\\n sorted\\n yea\\n go\\n now\\n testing\\n please\\n work\\n now\\help'

我已阅读 Kivy docs on ScrollView,说我需要指定 size_hints 之一以启用滚动。我已经阅读了几篇关于让 ScrollView 工作的 SO 帖子:

Kivy ScrollView - Not Scrolling kivy scrollview is not working kivy Scrollview can't Scroll ScrollView widget not scolling in kivy Kivy -- scroll view not working. And and how add chat users on side pane Kivy - My ScrollView doesn't scroll

但它们都涉及嵌入某种布局(例如 GridLayout),但我没有嵌入布局,只是一个标签。我尝试将 minimum_height 设置为我在这些帖子中看到的各种内容,但仍然没有效果。

那两个 size_hint_y 在那里只是为了按照指示去做;我不需要它们。还尝试将它们设置为无。

有什么想法吗?

另外,文本的静态字符串不是我最终想要的。我希望标签在字符串更改时保持可滚动(当用户放入新的文件列表时),但我认为“动态”操作可能是一个问题,所以现在我“退回”尝试使用静态字符串。

【问题讨论】:

【参考方案1】:

为了使Label 可滚动,它应该大于ScrollView 小部件,因此您需要将size_hint 设置为None 并将标签大小绑定到文本大小。例如:

test.kv:

ScrollView:
    Label:
        id: sortFilesDisplay
        size_hint: None, None     # <<<<<<<<<<
        size: self.texture_size   # <<<<<<<<<<
        text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit,\n sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n\n" * 20

ma​​in.kv

from kivy.app import App
from kivy.config import Config
Config.set('graphics', 'width', '300')
Config.set('graphics', 'height', '200')


class TestApp(App):
    pass


if __name__ == '__main__':
    TestApp().run()

【讨论】:

哦! Label size 需要将 size_hint 设置为 None。我试图对 ScrollIView 这样做。伟大的!谢谢!

以上是关于标签的 Kivy ScrollView 不会滚动的主要内容,如果未能解决你的问题,请参考以下文章

Kivy - 创建一个可扩展的 ScrollView

Kivy ScrollView - 不滚动

为啥孩子的 Kivy ScrollView 孩子不可滚动?

Kivy Scrollview 自动滚动到新文本。防止向上滚动

如何在 Kivy ScrollView 中滚动 GridLayout?

Kivy Scrollview 自动滚动到新文本和行消失