Kivy 1.10.1 с прокруткой не может прокручиваться при прикосновении - PullRequest
0 голосов
/ 11 марта 2019

Код прекрасно работает с 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

Любая помощь будет оценена.Спасибо!

1 Ответ

1 голос
/ 12 марта 2019

Виджет 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)

выход

DropDown - scroll bar inactive DropDown - scroll bar active

...