Python Kivy:嵌套的滚动视图

如何解决Python Kivy:嵌套的滚动视图

我在垂直滚动视图中有一个嵌套的水平滚动视图,我跟踪了许多链接,没有发现任何东西,我需要一个清晰的滚动视图,这样,如果滚动嵌套的水平滚动视图,它将在不干扰父级垂直滚动视图的情况下滚动,并且如果我垂直滚动嵌套的水平滚动视图,然后只有父垂直滚动视图才能滚动!有什么建议 ?提前致谢! (我希望滚动视图与其他任何现代应用(例如,Facebook故事水平滚动视图等)相同。)

解决方法

这是您实现所需目标的方法。

使用KivyMD为您的应用程序获取材料设计。 https://kivymd.readthedocs.io/en/latest/index.html

然后尝试一下

scrollview.py

from kivymd.app import MDApp
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window

class MyScrollView(ScrollView):
    def on_touch_down(self,touch):
        # get touch position in coordinates of the main_box (parent of inner_scroll)
        x,y = self.ids.main_box.to_widget(*self.to_window(*touch.pos))

        # if converted position is within the inner_scroll,send touch to the inner_scroll
        if self.ids.inner_scroll.collide_point(x,y):
            touch.pos = (x,y)   # change touch position to coordinates in main_box
            return self.ids.inner_scroll.on_touch_down(touch)   # call on_touch of inner_scroll
        else:
            return super(MyScrollView,self).on_touch_down(touch)

class ScrolltwoApp(MDApp):
    
    def build(self):
        app=MDApp.get_running_app()
        Clock.schedule_once(self.add_members)
        return app.root
    
    def add_members(self,dt):
        app=MDApp.get_running_app()
        for i in range(15):
            app.root.ids.main_box.add_widget(Button(text='button'+str(i),size_hint=(1.0,None),height=50,background_color=[0,1,1]))
            app.root.ids.horizontal_grid.add_widget(Button(text='button' + str(i),size_hint=(None,height=130,width=100,1]))
            app.root.ids.horizontal_grid2.add_widget(Button(text='button' + str(i),1]))

if __name__ == '__main__':
    Window.show_cursor = True
    Window.size = (360,680)
    ScrolltwoApp().run()

scrolltwo.kv

#: import Window kivy.core.window.Window
MyScrollView:
    bar_width: 5
    scroll_type:['bars','content']
    do_scroll: (False,True)
    size_hint_y: None
    height: Window.height
    GridLayout:
        id: main_box
        size_hint_y: None
        cols: 1
        height: self.minimum_height
        ScrollView:
            id: inner_scroll
            bar_width: 5
            scroll_type: ['bars','content']
            do_scroll: (True,False)
            size_hint_y: None
            effect_cls: "ScrollEffect"
            height: Window.height/4.5
            GridLayout:
                id: horizontal_grid
                rows: 1
                padding: [10,10]
                size: self.minimum_size
                size_hint: None,None
        ScrollView:
            id: inner_scroll2
            bar_width: 5
            scroll_type: ['bars',False)
            size_hint_y: None
            effect_cls: "ScrollEffect"
            height: Window.height/4.5
            GridLayout:
                id: horizontal_grid2
                rows: 1
                padding: [10,None

输出

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?