3

我在 Kivy 语言与 Python 语言的概念之间来回切换时遇到了麻烦。我不太擅长解释事情,我已经考虑过如何解释我的具体问题,但我能想到的最好方法是:

如何实现ScrollViewApp使用该Builder功能?

4

1 回答 1

4

嗯,类似的东西

ScrollView:
    size_hint: None, None
    size: 500, 320
    pos_hint: {'center_x': .5, 'center_y': .5}
    do_scroll_x: False

    GridLayout:
        cols: 1
        padding: 10
        spacing: 10
        size_hint_y: None
        height: self.minimum_height

        ScrollButton:
            text: '1'
        ScrollButton:
            text: '2'
        ScrollButton:
            text: '3'
        ScrollButton:
            text: '4'
        ScrollButton:
            text: '5'
        ScrollButton:
            text: '6'

<ScrollButton@Button>
    size_hint: None, None
    size: 480, 40

在这里,但是我们真的没有办法动态创建孩子(嗯,会有办法,但它们很丑),所以我手动放了一些,理想情况下你会在 kv 中创建 ScrollView 和 GridLayout,然后将孩子从 python 中放入(使用 id,如文档中所述)。

编辑:使用应用程序和 ObjectProperty 的更完整版本

kv 文件 (scroll.kv):

ScreenManager:
    Screen:
        ScrollView:
            size_hint: None, None
            size: 500, 320
            pos_hint: {'center_x': .5, 'center_y': .5}

            GridLayout:
                cols: 1
                padding: 10
                spacing: 10
                height: self.minimum_height
                size_hint: None, None
                do_scroll_x: False
                id: container

<ScrollButton>
    size_hint: None, None
    size: 480, 40

蟒蛇文件(main.py):

from kivy.app import App
from kivy.uix.button import Button

class ScrollButton(Button):
    pass

class ScrollApp(App):
    def build(self):
        super(ScrollApp, self).build()
        container = self.root.ids.container
        for i in range(30):
            container.add_widget(ScrollButton(text=str(i)))
        return self.root   # return root does not work

if __name__ == '__main__':
    ScrollApp().run()
于 2013-06-05T17:02:52.307 回答