1
我正在尋找一種方法來設置Kivy Spinner的值,具體取決於從父Spinner中選擇的文本。問題是我已經用kv語言定義了兩個spinners。我不確定這種方法是否會在每次從第一個值中選擇一個新值時銷燬第二個微調器,然後重新生成它(如果是這樣,我不知道該怎麼做,因爲kv代碼),或者如果會有一種方法可以根據更新列表的on_text過程動態更新第二個微調器的「值」。動態更改Kivy Spinner值
在所有情況下,下面的代碼不起作用。任何幫助讚賞。謝謝。
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()
非常感謝。我認爲這份清單是與紡紗廠綁定的,儘管它似乎只是給紡紗廠提供了它的初始價值,所以我最終正在處理錯誤的物品。再次感謝您的幫助。 –