У меня 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
, но почему при щелчке не отображается раскрывающийся список?