如何通过拖动滑块来控制我的 Kivy 滚动视图?

Posted

技术标签:

【中文标题】如何通过拖动滑块来控制我的 Kivy 滚动视图?【英文标题】:How can I control my Kivy scrollview by dragging the sliders? 【发布时间】:2015-08-06 06:50:21 【问题描述】:

我是 Kivy 的新手,虽然我喜欢触摸界面,但我希望我的代码也能在非触摸屏计算机上正常工作。

现在我有一个滚动视图,其中有一个大于可见区域的网格布局。通过滑动屏幕或在背景上单击并拖动鼠标,我可以非常轻松地移动视图。我要添加的是一个常规的单击和拖动功能到我的滚动条(就像浏览器窗口右侧的滚动条)。

我不需要向上和向下的小箭头,但我希望能够拖动滚动条并在我的滚动视图中移动。

我是 SO 和 Kivy/Python 的新手,所以如果这是一个不好的问题或措辞不当,我深表歉意。

【问题讨论】:

【参考方案1】:

是的,您可以这样做: 在 ScrollView 中有一个 scroll_type 属性,因此通过设置它,您可以实现您想要做的事情。

http://kivy.org/docs/api-kivy.uix.scrollview.html?highlight=scroll_type#kivy.uix.scrollview.ScrollView.scroll_type

如果您设置了 scroll_type=['bars'],您可能想要更改 bar_width 属性,因为它默认为 2,而且它太小而无法用鼠标抓取

这是一个基于文档中的示例:

layout = GridLayout(cols=1, spacing=10, 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(30):
    btn = Button(text=str(i), size_hint_y=None, height=40)
    layout.add_widget(btn) 
root = ScrollView(size_hint=(None, None), size=(400, 400),
                scroll_type=['bars'], bar_width='10dp') #you can use both ['bars','content']
root.add_widget(layout)

您可以浏览文档,看看您还可以根据自己的需要更改哪些内容。

【讨论】:

感谢@Flns 的帮助。这正是我所需要的。 滚动条的行为对于鼠标来说似乎很奇怪。我必须单击并向下拖动滚动条才能将其向上移动,反之亦然。有没有办法改变这种默认行为?编辑:更改为 scroll_type = ['bars','content'] 就可以了。

以上是关于如何通过拖动滑块来控制我的 Kivy 滚动视图?的主要内容,如果未能解决你的问题,请参考以下文章

IOS中水平滚动视图问题内的滑块

UIScrollView 通过拖动到主视图

如何在 MATLAB GUI 中设置滑块来控制视频?

在kivy中禁用弹跳滚动效果

QQ滑块登陆验证码识别的脚本源码

(垂直)滚动视图包含另一个(水平)滚动视图 - Kivy