Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Kivy:Scrollview在更改小部件大小时未激活_Python_Python 3.x_Kivy - Fatal编程技术网

Python Kivy:Scrollview在更改小部件大小时未激活

Python Kivy:Scrollview在更改小部件大小时未激活,python,python-3.x,kivy,Python,Python 3.x,Kivy,我正在尝试在我的用户界面中使用滚动条。我的用户界面将能够从用户输入的文本量扩展。 但它的拉伸方式不会导致Scrollview“激活”。 这段代码只是在4秒后增加小部件的大小来测试这一点。 首先看起来像 然后看起来像 请注意,我们现在无法看到最后一个列表项。但是滚动条应该在屏幕右侧可见,表示我们可以向下滚动查看它。但我们不能。Scrollview不知道内容已推过屏幕底部 代码 from kivy.app import App from kivy.lang import Builder from k

我正在尝试在我的用户界面中使用滚动条。我的用户界面将能够从用户输入的文本量扩展。 但它的拉伸方式不会导致Scrollview“激活”。

这段代码只是在4秒后增加小部件的大小来测试这一点。
首先看起来像 然后看起来像 请注意,我们现在无法看到最后一个列表项。但是滚动条应该在屏幕右侧可见,表示我们可以向下滚动查看它。但我们不能。Scrollview不知道内容已推过屏幕底部

代码

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.clock import Clock
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import ObjectProperty
from lib.modules.adaptive_grid_layout import Adaptive_GridLayout

#This should have not enough content to scroll at first,
#but the size change should push some content past the border

Builder.load_string('''
<GrowingLabel>:
    padding: 10, 5
    size_hint_y: None
    text_size: self.width, None
    group: 'test'
    canvas.before:
        Color:
            rgba: .7, .7, .7, 1
        Rectangle:
            pos: self.pos
            size: self.size

<Controller>:
    layout_content: layout_content
    BoxLayout:
        id: bl
        orientation: 'vertical'
        padding: 10, 10
        row_default_height: '48dp'
        row_force_default: True
        spacing: 10, 10
        ScrollView:
            size: self.size
            GridLayout:
                id: layout_content
                size_hint_y: None
                cols: 1
                spacing: 0, 0
                padding: 0, 0
                Adaptive_GridLayout:
                    id: Row2
                    cols: 1
                    grow_rows: True
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    GrowingLabel:
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dkdsjahf lkasjkat"
                    Label:
                        height: 20
                        text: "Lorem ipsdodo dod dodo do dodt"
                    Label:
                        height: 20
                        text: "Lorem ipsdkjwww  ww woij ksdsdf sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Lorem ipsum dolor sit amet"
                    Label:
                        height: 20
                        text: "Last List item"



''')

class GrowingLabel(Label):
    def __init__(self, **kwargs):
        super(GrowingLabel, self).__init__(**kwargs)
        #self.size_hint_y = None
        self.height = 20
        Clock.schedule_once(lambda dt: self.changeHeight(120), timeout=4)

    def changeHeight(self, p_val):
        self.height = p_val

class Controller(FloatLayout):
    layout_content=ObjectProperty(None)

    def __init__(self, **kwargs):
        super(Controller, self).__init__(**kwargs)
        self.layout_content.bind(minimum_height=self.layout_content.setter('height'))

class Nested2App(App):
    def build(self):
        return Controller()

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

从kivy.app导入应用
从kivy.lang导入生成器
从kivy.uix.widget导入widget
从kivy.uix.label导入标签
从kivy.clock导入时钟
从kivy.uix.floatlayout导入floatlayout
从kivy.properties导入ObjectProperty
从lib.modules.adaptive_grid_layout导入adaptive_GridLayout
#这应该没有足够的内容在开始时滚动,
#但是大小的改变会使一些内容越过边界
Builder.load_字符串(“”)
:
填充:10,5
尺寸提示:无
文本大小:self.width,无
组:“测试”
在以下情况之前:
颜色:
rgba:.7.7.7.1
矩形:
pos:self.pos
大小:self.size
:
版面内容:版面内容
盒子布局:
id:bl
方向:“垂直”
填充:10,10
行\默认\高度:“48dp”
行\强制\默认值:True
间距:10,10
滚动视图:
大小:self.size
网格布局:
id:布局和内容
尺寸提示:无
科尔斯:1
间距:0,0
填充:0,0
自适应网格布局:
id:第2排
科尔斯:1
增加行数:True
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
生长标签:
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
文字:“Lorem ipsum dkdsjahf lkasjkat”
标签:
身高:20
文字:“Lorem ipsdodo dod dodo dodt”
标签:
身高:20
文字:“Lorem IPSDKJWW woij ksdsdf sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
正文:“Lorem ipsum dolor sit amet”
标签:
身高:20
文本:“最后一个列表项”
''')
类别增长标签(标签):
定义初始(自我,**kwargs):
超级(生长标签,自我)。\uuuuu初始值(**kwargs)
#self.size\u hint\u y=无
自身高度=20
时钟调度一次(lambda dt:self.changehight(120),超时=4)
def更改高度(自身,p_值):
self.height=p_val
类控制器(浮动布局):
布局内容=对象属性(无)
定义初始(自我,**kwargs):
超级(控制器,自我)。\uuuuu初始化(**kwargs)
self.layout\u content.bind(最小高度=self.layout\u content.setter('height'))
类嵌套2App(应用程序):
def生成(自):
返回控制器()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
Nested2App().run()
注意:我正在使用一个名为Adaptive_GridLayout的自定义布局,它处理您可以找到的缩放问题

我向你提出的问题
是否有办法手动触发滚动条在滚动中的显示
            Adaptive_GridLayout:
                id: Row2
                cols: 1
                grow_rows: True
                size_hint: 1.0, None
                height: self.minimum_height