Почему невозможно передать значения в унаследованный класс Spinner? - PullRequest
0 голосов
/ 24 сентября 2019

У меня MySpinner класс, унаследованный от Spinner.Если я передаю значения (список строк) в обычный Spinner, он работает нормально, но если я передаю значения в MySpinner, выпадающий список вообще отсутствует.Что-то я пропустил в своем коде?

from kivy.app import App
from kivy.uix.spinner import Spinner
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ListProperty
from kivy.lang import Builder

Builder.load_string("""
<MySpinner>:

<MyBar>:
    orientation: 'horizontal'
    padding: 2
    spacing: 2
    canvas.before:
        Color:
            rgba: 1, 1, 1, 1
        Line:
            width: 1.
            rectangle: (self.x+1, self.y-1, self.width, self.height)
    BoxLayout:
        orientation: 'vertical'
        padding: 2,2,2,2
        spacing: 2
        size_hint: None, 1
        width: 110
        MySpinner:
            id:  _myspinner
            text:  'Type'
            values:   self.types
            size_hint:  None, .45
            on_text:  self.on_spinner_select(self.text)
        Spinner:
            id:  _spinner
            text:  'Type'
            values:   root.types 
            size_hint:  None, .45
            on_text:  root.selected(_myspinner.values)
""")

class MyBar(BoxLayout):
    types = ListProperty(['0', '1', '2', '3'])
    def selected(self, values):
        print(values)

class MySpinner(Spinner):
    types = ListProperty(['4', '5', '6', '7', '8', '9'])

    def __init__(self, **kwargs):
        super(Spinner, self).__init__(**kwargs)

    def on_spinner_select(self, text):
        print(text)


class MainApp(App):
    def build(self):
        return MyBar()

if __name__ == '__main__':
    MainApp().run()

on_text: root.selected(_myspinner.values) печатает все значения, переданные в MySpinner, но почему при щелчке не отображается раскрывающийся список?

...