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