![](/img/trans.png)
[英]Error on ScrollView+StackLayout when binding minimum_height on Kivy
[英]Kivy StackLayout in ScrollView
我只是无法让它滚动...。
这是我的代码:
sview=uix.scrollview.ScrollView(size_hint=[1,2],scroll_type=['bars','content'],valign='top',bar_width="10dp")
bl=uix.stacklayout.StackLayout(size_hint_y=None)
for x in list:
bl.add_widget(uix.button.Button(text=x['text'])
sview.add_widget(bl)
它稍微复杂一点,但这就是要点
这是scrollview的工作示例。 从文档: ScrollView
我对其进行了编辑以使用stacklayout。
尝试在ScrollView中更改size_hint,如下所示:
size_hint=(1, None)
还要设置ScrollView的大小,使其具有窗口高度:
size=(Window.width, Window.height)
并如示例中所示,绑定布局的最小高度。 在您的情况下添加bl.bind(minimum_height=bl.setter('height'))
。
最后将按钮的size_hint设置为None:
size_hint_y=None
from kivy.uix.stacklayout import StackLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window
from kivy.app import runTouchApp
layout = StackLayout(size_hint_y=None)
# Make sure the height is such that there is something to scroll.
layout.bind(minimum_height=layout.setter('height'))
for i in range(100):
btn = Button(text=str(i), size_hint_y=None, height=40)
layout.add_widget(btn)
root = ScrollView(size_hint=(1, None), size=(Window.width, Window.height))
root.add_widget(layout)
runTouchApp(root)
如果要更改窗口大小,请尝试使用kv lang进行设置。 这样,它会自动绑定到Windows大小。
像这样:
from kivy.uix.stacklayout import StackLayout
from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.app import App
KV = '''
#: import Window kivy.core.window.Window
ScrollView:
size_hint: (1,None)
size: (Window.width, Window.height)
MyLayout:
'''
class MyLayout(StackLayout):
def __init__(self,**kwargs):
super(MyLayout,self).__init__(**kwargs)
self.size_hint_y=(None)
self.bind(minimum_height=self.setter('height'))
for i in range(100):
btn = Button(text=str(i), size_hint_y=None, height=40)
self.add_widget(btn)
class MyApp(App):
def build(self):
return Builder.load_string(KV)
MyApp().run()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.