Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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上创建可滚动的浮动布局?_Python_Kivy - Fatal编程技术网

Python 如何在Kivy上创建可滚动的浮动布局?

Python 如何在Kivy上创建可滚动的浮动布局?,python,kivy,Python,Kivy,我想创建一个可滚动的浮动布局 我在互联网上找到了这段代码,用于创建可滚动的网格布局: from kivy.app import App from kivy.uix.gridlayout import GridLayout from kivy.uix.floatlayout import FloatLayout from functools import partial from kivy.uix.scrollview import ScrollView from kivy.uix.slider

我想创建一个可滚动的浮动布局

我在互联网上找到了这段代码,用于创建可滚动的网格布局

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.floatlayout import FloatLayout
from functools import partial
from kivy.uix.scrollview import ScrollView
from kivy.uix.slider import Slider
from kivy.uix.button import Button

class Board(FloatLayout):
    def __init__(self, **kwargs):
        super(Board, self).__init__(**kwargs)
        scrlv = ScrollView(size_hint=(0.9,0.95))
        layout2 = GridLayout(cols=1, size_hint_y=None)
        layout2.bind(minimum_height=layout2.setter('height'))
        scrlv.add_widget(layout2)
        s = Slider(min=0, max=1, value=25, orientation='vertical', step=0.01, size_hint=(0.1, 0.95))
        scrlv.bind(scroll_y=partial(self.slider_change, s))
        s.bind(value=partial(self.scroll_change, scrlv))

        self.add_widget(scrlv)
        self.add_widget(s)


        for i in range(1, 301):
            btn = Button(text=str(i), size_hint_y=None, height=60, valign='middle', font_size=12)
            btn.text_size = (btn.size)
            layout2.add_widget(btn)


    def scroll_change(self, scrlv, instance, value):
        scrlv.scroll_y = value

    def slider_change(self, s, instance, value):
        if value >= 0:
            s.value = value

class TestApp(App):
    def build(self):
        self.title = 'Test'
        return Board()


TestApp().run()
它工作正常,但当我尝试将其转换为floatlayout时,如下所示:

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.floatlayout import FloatLayout
from functools import partial
from kivy.uix.scrollview import ScrollView
from kivy.uix.slider import Slider
from kivy.uix.button import Button

class Board(FloatLayout):
    def __init__(self, **kwargs):
        super(Board, self).__init__(**kwargs)
        scrlv = ScrollView(size_hint=(0.9, 0.95))
        layout2 = FloatLayout(size_hint_y=None)
        layout2.bind(minimum_height=layout2.setter('height'))
        scrlv.add_widget(layout2)
        s = Slider(min=0, max=1, value=25, orientation='vertical', step=0.01, size_hint=(0.1, 0.95))
        scrlv.bind(scroll_y=partial(self.slider_change, s))
        s.bind(value=partial(self.scroll_change, scrlv))

        self.add_widget(scrlv)
        self.add_widget(s)


        for i in range(1, 301):
            btn = Button(text=str(i), size_hint_y=None, height=60, valign='middle', font_size=12)
            btn.text_size = (btn.size)
            btn.y = 100 - (60*i)
            layout2.add_widget(btn)


    def scroll_change(self, scrlv, instance, value):
        scrlv.scroll_y = value

    def slider_change(self, s, instance, value):
        if value >= 0:
            s.value = value

class TestApp(App):
    def build(self):
        self.title = 'Test'
        return Board()


TestApp().run()
它不起作用,我得到了这个错误:

layout2.bind(minimum_height=layout2.setter('height'))
   File "kivy\_event.pyx", line 427, in kivy._event.EventDispatcher.bind
 KeyError: 'minimum_height'
我在网上读到过,我知道floatlayout没有“minimum_height”属性,但我不知道可以用什么来代替它。
有什么建议吗?

要使浮动布局滚动:

  • 将其大小\u提示设置为
    None,None
  • 将其大小设置为大于ScrollView的大小