简体   繁体   English

Kivy Scroll View 不滚动

[英]Kivy Scroll View does not scroll

I use kivys scroll view widget for the first time and I am not sure how I get this to run.我第一次使用 kivys 滚动视图小部件,我不确定如何运行它。 I want to scroll up and done trough the different labels.我想向上滚动并通过不同的标签完成。

How can I achieve this ?我怎样才能做到这一点?

Which attributes are needed for the scroll view widget ?滚动视图小部件需要哪些属性? Can I use any layout for it ?我可以使用任何布局吗?

Thanks谢谢

This Code that does not work at the moment:此代码目前不起作用:

<YearLabel@ButtonBehavior+Label>:
<YearScreen>:
    canvas.before:
        Color:
            rgba: 1,1,1,0.25
        Rectangle:
            pos: self.pos
            size: self.size


    canvas.after:
        Color:
            rgba : 0,0,0,1
        Rectangle:
            pos: 160,1560
            size: 419,60


    ScrollView:
        scroll_timeout: 250
        scroll_distance: 20
        do_scroll_y: True
        do_scroll_x: False
        height: 100
        GridLayout:
            cols : 1
            spacing: 10
            padding: 10
            height: 50
            YearLabel:
                id: year_label
                font_name: "Fonts/sans-serif.ttf"
                text : "2020"
                color: 0,0,0,1
                pos : 0,1200
                font_size: "120sp"

            YearLabel:
                id: year_label
                font_name: "Fonts/sans-serif.ttf"
                text : "2021"
                color: 0,0,0,1
                pos: 0,900
                font_size: "120sp"
            YearLabel:
                id: year_label
                font_name: "Fonts/sans-serif.ttf"
                text : "2022"
                color: 0,0,0,1
                pos: 0,600
                font_size: "120sp"

            YearLabel:
                id: year_label
                font_name: "Fonts/sans-serif.ttf"
                text : "2023"
                color: 0,0,0,1
                pos: 0,300
                font_size: "120sp"

            YearLabel:
                id: year_label
                font_name: "Fonts/sans-serif.ttf"
                text : "2024"
                color: 0,0,0,1
                pos: 0,0
                font_size: "120sp"

            YearLabel:
                id: year_label
                font_name: "Fonts/sans-serif.ttf"
                text : "2025"
                color: 0,0,0,1
                pos: 0,-300
                font_size: "120sp"

            YearLabel:
                id: year_label
                font_name: "Fonts/sans-serif.ttf"
                text : "2026"
                color: 0,0,0,1
                pos: 0,-600
                font_size: "120sp"

            YearLabel:
                id: year_label
                font_name: "Fonts/sans-serif.ttf"
                text : "2027"
                color: 0,0,0,1
                pos: 0,-900
                font_size: "120sp"

            YearLabel:
                id: year_label
                font_name: "Fonts/sans-serif.ttf"
                text : "2028"
                color: 0,0,0,1
                pos: 0,-1200
                font_size: "120sp"

            YearLabel:
                id: year_label
                font_name: "Fonts/sans-serif.ttf"
                text : "2029"
                color: 0,0,0,1
                pos: 0,-1500
                font_size: "120sp"


            YearLabel:
                id: year_label
                font_name: "Fonts/sans-serif.ttf"
                text : "2030"
                color: 0,0,0,1
                pos: 0,-1800
                font_size: "120sp"

The ScrollView will not work if its child (the GridLayout ) is smaller than the ScrollView .ScrollView ,如果其子(在将不起作用GridLayout )比小ScrollView Typically, the GridLayout would be large enough to hold all its children (the YearLabels ).通常, GridLayout将足够大以容纳其所有子项( YearLabels )。 Conveniently, the GridLayout can calculate that size. GridLayout可以方便地计算该大小。 Here is a modified version of your kv that uses it:这是使用它的kv的修改版本:

ScrollView:
    scroll_timeout: 250
    scroll_distance: 20
    do_scroll_y: True
    do_scroll_x: False
    GridLayout:
        cols : 1
        spacing: 10
        padding: 10
        size_hint_y: None  # required since we are setting height
        height: self.minimum_height  # let GridLayout calculate height

Also, I removed the height: 100 from the ScrollView , since it had no effect.另外,我从ScrollView删除了height: 100 ,因为它没有效果。

In order for the GridLayout to calculate minimum_height , all its children must have well defined heights .为了让GridLayout计算minimum_height ,它的所有子项都必须有明确定义的heights So, I added to your YearLabel rule:所以,我添加到你的YearLabel规则中:

<YearLabel@ButtonBehavior+Label>:
    size_hint: 1, None
    height: dp(100)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM