带有滚动视图的 Kivy 1.10.1 下拉列表无法在触摸时滚动
Kivy 1.10.1 dropdown with scrollview can't scroll on touch
该代码与 kivy 1.9.1 完美兼容,但与 kivy master 或 1.10.1 不兼容
代码:
DropDown:
auto_width: False
id: colors
size: (root.width, 100)
ScrollView:
bar_width: 5
do_scroll_y: False
do_scroll_x: True
height: 100
size_hint_y: None
GridLayout:
id: colors_scroll
rows: 1
spacing: 0
width: self.minimum_width
size_hint: None, None
30Buttons:
size_hint: None, None
size: 100,100
如有任何帮助,我们将不胜感激。谢谢!
DropDown 小部件当前已经继承了 ScrollView。
尝试将以下内容添加到 ScrollView:
effect_cls: "ScrollEffect"
scroll_type: ['bars']
例子
main.py
from kivy.uix.dropdown import DropDown
from kivy.uix.button import Button
from kivy.base import runTouchApp
from kivy.lang import Builder
Builder.load_string("""
#:import Button kivy.uix.button.Button
<CustomDropDown>:
bar_width: 10
effect_cls: "ScrollEffect"
scroll_type: ['bars']
bar_color: [1, 0, 0, 1] # red color
bar_inactive_color: [0, 0, 1, 1] # blue color
GridLayout:
cols: 1
size_hint_y: None
height: self.minimum_size[1]
on_parent:
for i in range(1, 30): \
txt = "{0}".format(i); \
btn=Button(text=txt, size_hint_y=None, height=40); \
btn.bind(on_release=lambda btn: self.select(btn.text)); \
self.add_widget(btn)
""")
class CustomDropDown(DropDown):
pass
dropdown = CustomDropDown()
mainbutton = Button(text='Hello', size_hint=(None, None))
mainbutton.bind(on_release=dropdown.open)
dropdown.bind(on_select=lambda instance, x: setattr(mainbutton, 'text', x))
runTouchApp(mainbutton)
输出
该代码与 kivy 1.9.1 完美兼容,但与 kivy master 或 1.10.1 不兼容
代码:
DropDown:
auto_width: False
id: colors
size: (root.width, 100)
ScrollView:
bar_width: 5
do_scroll_y: False
do_scroll_x: True
height: 100
size_hint_y: None
GridLayout:
id: colors_scroll
rows: 1
spacing: 0
width: self.minimum_width
size_hint: None, None
30Buttons:
size_hint: None, None
size: 100,100
如有任何帮助,我们将不胜感激。谢谢!
DropDown 小部件当前已经继承了 ScrollView。
尝试将以下内容添加到 ScrollView:
effect_cls: "ScrollEffect"
scroll_type: ['bars']
例子
main.py
from kivy.uix.dropdown import DropDown
from kivy.uix.button import Button
from kivy.base import runTouchApp
from kivy.lang import Builder
Builder.load_string("""
#:import Button kivy.uix.button.Button
<CustomDropDown>:
bar_width: 10
effect_cls: "ScrollEffect"
scroll_type: ['bars']
bar_color: [1, 0, 0, 1] # red color
bar_inactive_color: [0, 0, 1, 1] # blue color
GridLayout:
cols: 1
size_hint_y: None
height: self.minimum_size[1]
on_parent:
for i in range(1, 30): \
txt = "{0}".format(i); \
btn=Button(text=txt, size_hint_y=None, height=40); \
btn.bind(on_release=lambda btn: self.select(btn.text)); \
self.add_widget(btn)
""")
class CustomDropDown(DropDown):
pass
dropdown = CustomDropDown()
mainbutton = Button(text='Hello', size_hint=(None, None))
mainbutton.bind(on_release=dropdown.open)
dropdown.bind(on_select=lambda instance, x: setattr(mainbutton, 'text', x))
runTouchApp(mainbutton)