gpt4 book ai didi

python - 尝试向下滚动带有水平 ScrollView 的垂直 ScrollView 时,Kivy 出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:02 26 4
gpt4 key购买 nike

好吧,所以我正在用 Kivy(1.11.1) 构建一些东西,总结一下我有一个垂直滚动的 ScrollView,里面还有一些其他 ScrollView,但这些只水平滚动,问题是每当我滚动外部 ScrollView 向下并且鼠标位置进入内部水平 ScrollView 外部 Scrollview 停止向下滚动,看起来一旦鼠标位置与水平 ScrollView 碰撞,滚动行为就会停止发送到外部 ScrollView(垂直),因此它停止向下滚动。我想要的是类似 Netflix 页面的东西,其中有一些水平 ScrollView (我的列表、系列、恐怖电影等),您可以滚动以查看更多选项,但它们都位于垂直滚动的外部 ScrollView 内,当然,在 Netflix 中,当您向下滚动时,即使您的鼠标位置进入其中一个水平 ScrollView ,它仍然会继续向下滚动外部 ScrollView。

我尝试将水平 ScrollView do_scroll_y 设置为 False 但问题仍然存在。除此之外。向上滚动效果很好

from kivy.app import App
from kivy.lang.builder import Builder
from kivy.uix.boxlayout import BoxLayout

Builder.load_string(
'''
<ScrollApp>:
ScrollView:
bar_width: 10
scroll_type: ['bars', 'content']

BoxLayout:
id: content
orientation: 'vertical'
size_hint: 1, None
height: self.minimum_height
padding: 22, 0, 22, 50
spacing: 50
canvas:
Color:
rgba: .15, .15, .15, .9
Rectangle:
size: self.size
pos: self.pos
Button:
size_hint: None, None
width: 100
height: 100
on_press: print('pressed')
# "ScrollViews containers"
Custom
Custom
Custom
Custom

<Custom@BoxLayout>:
orientation: 'vertical'
size_hint: 1, None
height: self.minimum_height
Label:
size_hint: None, None
size: self.texture_size
id: label
font_size: 20
ScrollView:
size_hint: 1, None
height: 150
do_scroll: True, False

on_scroll_start: print('scrolling. but why?')
GridLayout:
id: grid
size_hint: None, None
size: self.minimum_width, 150
spacing: 5
cols: 3
Button:
size_hint: None, None
size: 400, 150
Button:
size_hint: None, None
size: 400, 150
Button:
size_hint: None, None
size: 400, 150
''' )

class ScrollApp(BoxLayout):
pass

class Test(App):
def build(self):
return ScrollApp()

Test().run()


最佳答案

我不能声称完全理解这种情况,但似乎垂直 ScrollView 位于另一个垂直 ScrollView 中是有效的。因此,解决方法是使 Custom 类中的 ScrollView 允许垂直滚动(以及水平滚动)。为此,请将 CustomScrollViewkv 更改为:

ScrollView:
size_hint: 1, None
height: 150
do_scroll: True, True # allow vertical scrolling also

on_scroll_start: print('scrolling. but why?')
GridLayout:
id: grid
size_hint: None, 1.01 # height must be slightly greater than ScrollView height
width: self.minimum_width

为了使垂直滚动在上面工作,GridLayout的高度必须大于ScrollView的高度,因此1.01 尺寸提示。

关于python - 尝试向下滚动带有水平 ScrollView 的垂直 ScrollView 时,Kivy 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57900718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com