python - ScrollView 中的 Kivy StackLayout

标签 python scrollview kivy

我只是无法让它滚动......

这是我的代码:

    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)

如示例所示,绑定(bind)布局最小高度。添加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 进行更改。这样它就会自动绑定(bind)到 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()

关于python - ScrollView 中的 Kivy StackLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43546607/

相关文章:

python - 根据类的字符串名称创建类的实例

python - Matplotlib imshow - 显示不同的颜色

react-native - 在 ScrollView 中 react 原生 100% 宽度 View

python - 当按下 kivy 屏幕上的 recycleview 中的 viewclass 按钮时,如何移动到下一个屏幕?

python - 通过Python在Kivy中设置动态Id

python - 蒙蒂霍尔模拟器有一个错误的结果

将行作为列索引、将列作为行索引的 Pythonic 方法

Android:如何创建类似于日历应用程序的布局 - 创建事件

ios - ScrollView 中的 Swift 弹出窗口

python - 使用 kivy textinput 的 'input_type' 属性的问题