在kivy中禁用弹跳滚动效果
Posted
技术标签:
【中文标题】在kivy中禁用弹跳滚动效果【英文标题】:Disable bouncing scrolling effect in kivy 【发布时间】:2020-10-15 17:18:27 【问题描述】:11.1
有谁知道在滚动视图中向上时如何禁用反弹滚动效果?我已经完成了一个带有 100 个按钮的滚动视图进行测试,当我通过手指滚动到达顶部时,我停止滚动,kivy 强迫我弹跳到第 4 个按钮,我希望他停止到第一个按钮。你知不知道怎么 ?谢谢
这是我的代码:
import kivy
kivy.require('1.11.1')
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window
from kivy.app import runTouchApp
from kivy.app import App
from kivy.effects.scroll import ScrollEffect
from kivy.effects.dampedscroll import DampedScrollEffect
from kivy.properties import NumericProperty
layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
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),\
bar_width = 10, bar_color= (0,1,0,1),\
scroll_type = ['bars', 'content'],\
effect_cls = 'ScrollEffect'\
)
root.add_widget(layout)
print(root.effect_y)
runTouchApp(root)
【问题讨论】:
我在我的机器、windows 10、python2.7 和 kivy=1.11.1 中测试了你的代码,我没有得到你提到的弹跳效果,我一直滚动到底部并返回顶部且两端不反弹,滚动到顶部时停留在第一个按钮,不反弹,滚动到底部时停留在最后一个按钮,不反弹。 嗨迭戈!感谢您的快速回复! 【参考方案1】:您好 Diego 感谢您的快速回复!
要提供更多详细信息,我有 Windows 8.1 *64 :)
像你一样,其他人没有这个问题,所以我想也许我尝试卸载-安装 2 触摸板驱动程序 -突触 17.0.6.13 -Elantech 11.6.27.201
我也尝试将 screel_wheel_distance 修改为 5 没有成功
但我发现可能是下面逐步解释的解决方案的开始
我用两根手指快速移动滚动到顶部。
kivy 按预期向上滚动
我的手指离开了触摸板
4 kivy 继续往上走就好了
-
在 kivy 下降之前,我用两根手指在 X 轴上快速移动,然后停止向下滚动,所以这个想法可能是在 X 轴上假装滚动?
你知道怎么做吗?谢谢
【讨论】:
【参考方案2】:将布局的 size_hint_y 设置为大于覆盖布局中所有项目的值(例如 3) 见:Problem with Kivy when trying to scrolldown vertical ScrollView with an horizontal ScrollView inside
root = ScrollView(size_hint=(3, None)
【讨论】:
以上是关于在kivy中禁用弹跳滚动效果的主要内容,如果未能解决你的问题,请参考以下文章
禁用 UIPageViewController 弹跳 - Swift [重复]