首页 > 解决方案 > KIVY:缺少滚动条

问题描述

我正在尝试在anchorlayout 中使用ScrollView。无法在相对布局中获得滚动条。请在下面找到我的示例代码。为什么滚动条不可见。

import kivy
from kivy.app import App
from kivy.uix.scrollview import ScrollView
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
from kivy.uix.button import Button
from kivy.factory import Factory
from kivy.core.window import Window

Builder.load_string('''
<ScrollView>:
    size_hint: 1,1
    DrawingSpace:
        size_hint: 1,1
''')

class Main(App):
    def build(self):
        self.root=DrawingSpace()
        return self.root

class DrawingSpace(RelativeLayout):
    def __init__(self, **kwargs):
        super(RelativeLayout, self).__init__(**kwargs)
        self.add_widget( Button(text = 'Scroll', size_hint=(None,None), size=(50,200), pos = (100, 100)))
        self.add_widget( Button(text = 'Scroll', size_hint=(None,None), size=(50,200), pos = (250, 300)))

Factory.register('DrawingSpace', cls=DrawingSpace)

if __name__ in ('__main__'):
    Window.size = (200, 200)
    app = Main()
    app.run()

谢谢

标签: kivyscrollview

解决方案


对于ScrollView,在您想要滚动的方向上,您必须设置size_hintNone指定大小。我用500进行测试。

import kivy
from kivy.app import App
from kivy.uix.scrollview import ScrollView
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
from kivy.uix.button import Button
from kivy.factory import Factory
from kivy.core.window import Window

Builder.load_string('''
<ScrollView>:
    size_hint: 1,1
    DrawingSpace:
        size_hint: 1,None
        height: 500
''')

class Main(App):
    def build(self):
        self.root=ScrollView()
        return self.root

class DrawingSpace(RelativeLayout):
    def __init__(self, **kwargs):
        super(RelativeLayout, self).__init__(**kwargs)
        self.add_widget( Button(text = 'Scroll', size_hint=(None,None), size=(50,200), pos = (100, 100)))
        self.add_widget( Button(text = 'Scroll', size_hint=(None,None), size=(50,200), pos = (250, 300)))

Factory.register('DrawingSpace', cls=DrawingSpace)

if __name__ in ('__main__'):
    Window.size = (200, 200)
    app = Main()
    app.run()

推荐阅读