Как создать прокручиваемый FloatLayout в Python Kivy - PullRequest
0 голосов
/ 21 сентября 2019

Я создаю меню поиска для списка учетных записей игроков.
Имена игроков, которые находятся в базе данных, должны отображаться в ScrollView.

Я пытался сделать это либо с GridLayout, либо с ScrollView, но я хочу разместить ник игрока рядом с его фотографией, поэтому я считаю, что использование FLoatLayout - лучший подход для достижения этой цели..

Тем не менее, я не могу сделать FLoatLayout прокручиваемым.

Этот код работает:

class TestApp(App):
    def build(self):
        root = BoxLayout(orientation='horizontal', pos=(200, 100))
        left=ScrollView(size_hint=[None, None], size=(194, 334))
        leftGrid = GridLayout(cols=1, size_hint_y=None,padding=20)
        leftGrid.bind(minimum_height=leftGrid.setter('height'))
        for x in range (34):
            self.image = Image(
                source='other_nick.gif', pos=(0, 0),height=30,size_hint_y=None,)
            label = Label(
                text='hello world', pos=(-15, 20), height=30,size_hint_y=None,)
            leftGrid.add_widget(self.image)
            leftGrid.add_widget(label)

        left.add_widget(leftGrid)
        root.add_widget(left)

        return root
if __name__ == "__main__":
    TestApp().run()

Но не так, как я хочу, так как он помещаеттекст рядом с изображением, но FloatLayout не прокручивается:

class TestApp(App):
    def build(self):
        root = BoxLayout(orientation='horizontal', pos=(200, 100))
        left=ScrollView(size_hint=[None, None], size=(194, 334))
        fl = FloatLayout(size_hint_y=None)
        y = 50
        for x in range (34):
            self.image = Image(
                source='other_nick.gif', pos(0,y),height=30,size_hint_y=None,)
            label = Label(
                text='hello world', pos=(-15, y), height=30,size_hint_y=None,)
            fl.add_widget(self.image)
            fl.add_widget(label)
            y -= 30

        left.add_widget(fl)
        root.add_widget(left)

        return root
if __name__ == "__main__":
    TestApp().run()
...