Я ищу способ установить значения Kivy Spinner в зависимости от текста, выбранного из родительского счетчика. Проблема в том, что я определил оба прядильника на языке kv. Я не уверен, что подход будет заключаться в том, чтобы уничтожить второй счетчик каждый раз, когда новое значение выбирается из первого, а затем регенерировать его (если это так, я не знаю, как это сделать из-за кода kv), или если был бы способ динамически обновлять «значения» второго счетчика на основе процедуры on_text, обновляющей список.Динамическое изменение значений кивков Kivy
Во всех случаях приведенный ниже код не работает. Любая помощь оценивается. Благодарю.
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.spinner import Spinner
Builder.load_string('''
<MainScreen>:
AnchorLayout:
anchor_x: 'center'
anchor_y: 'top'
BoxLayout:
size_hint: 1, .9
orientation: 'vertical'
padding: 80
spacing: 20
Spinner:
id: spinner_1
text: '<Select>'
values: root.pickType
on_text: root.updateSubSpinner(spinner_1.text)
Spinner:
id: spinner_2
text: '<Select>'
values: root.pickSubType
AnchorLayout:
anchor_x: 'center'
anchor_y: 'bottom'
size_hint: 1, .1
Button:
on_press: root.onExit()
text: 'Exit'
font_size: 50
''')
class MainScreen(FloatLayout):
def __init__(self, **kwargs):
self.buildLists()
super(MainScreen, self).__init__(**kwargs)
def buildLists(self):
self.pickType = ['Select','#1','#2','#3']
self.pickSubType = ['Select']
def updateSubSpinner(self,text):
if text == '#1':
self.pickSubType.extend('A'+'B')
elif text == '#2':
self.pickSubType.extend('P'+'Q')
else:
self.pickSubType.extend('Y'+'Z')
def onExit(self):
App.get_running_app().stop()
class TestApp(App):
def build(self):
return MainScreen()
if __name__ == "__main__":
TestApp().run()
Большое спасибо. Я думал, что список был привязан к счетчику, хотя явно кажется, что он обеспечивает только начальные значения счетчика, поэтому в конце концов я работал над неправильным объектом. Спасибо за помощь снова. –