Kivy:将 ScrollView 移动到某个 y

Posted

技术标签:

【中文标题】Kivy:将 ScrollView 移动到某个 y【英文标题】:Kivy: move the ScrollView to a certain y 【发布时间】:2021-06-25 12:14:56 【问题描述】:

我有一个基本应用程序,我需要将我的 ScrollView 移动到某个 y。 我使用scroll_to(),但这一次,我需要移动到某个位置以计算多个信息。 (我在the doc没有找到)

from kivy.lang import Builder
from kivymd.app import MDApp

KV = '''
BoxLayout:
    ScrollView:
        BoxLayout:
            orientation: "vertical"
            size_hint_y: None
            height: "900dp"
            MDLabel:
                text: "yolo"
                size_hint_y: None
                height: "300dp"
            MDLabel:
                text: "yulu"
            MDLabel:
                text: "yulu"
            MDLabel:
                text: "yulu"
            MDLabel:
                text: "yulu"
            MDLabel:
                text: "yulu"
            MDLabel:
                text: "yulu"
'''

class App(MDApp):
    def build(self):
        self.box = Builder.load_string(KV)
        return self.box

App().run()

【问题讨论】:

【参考方案1】:

看起来您需要scroll_y 参数。这是一个百分比值,表示滚动“向下”的距离。

来自文档:

一个 Y 滚动值,介于 0 和 1 之间。如果为 0,则为内容的底部 将触摸 ScrollView 的底部。如果为 1,则内容的顶部 侧面将接触顶部。

https://kivy.org/doc/stable/api-kivy.uix.scrollview.html#kivy.uix.scrollview.ScrollView.scroll_y

所以如果你设置ScrollView.scroll_y = 0.5,滚动框会向下滚动一半。

如果您知道滚动的距离(以像素为单位),您可以随时将上面的内容与convert_distance_to_scroll(dx, dy) 结合起来,(​​再次来自文档):

将像素距离转换为滚动距离,具体取决于 内容大小和滚动视图大小。

https://kivy.org/doc/stable/api-kivy.uix.scrollview.html#kivy.uix.scrollview.ScrollView.convert_distance_to_scroll

【讨论】:

我一直在寻找绝对 y,但我找到了 widget.y / layout_of_the_scroll_view.height,而且我有相对高度,谢谢您的帮助! :)

以上是关于Kivy:将 ScrollView 移动到某个 y的主要内容,如果未能解决你的问题,请参考以下文章

Kivy - 创建一个可扩展的 ScrollView

Kivy - 如何在 ModalView 内向 ScrollView 添加多个按钮?

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

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

Kivy ScrollView+手风琴错误

如何使用复选框实现 kivy ScrollView?