У меня есть много кнопок ToggleButton на экране B, и я жду, чтобы сбросить их все перед входом на экран.
class screenB(Screen):
def __init__(self, **kwargs):
super(MorePage, self).__init__(**kwargs)
Clock.schedule_once(self.AddWidget)
def AddWidget(self, *args):
for i in range(len(all_brand)):
brand_name = all_brand[i]
if brand_name[0] == "A" or brand_name[0] == "a":
self.tbutton = MyToggle(id=brand_name, text=brand_name)
self.ids.Axxx.add_widget(self.tbutton)
print(self.tbutton.id)
elif brand_name[0] == "B" or brand_name[0] == "b":
self.tbutton = MyToggle(id=brand_name, text=brand_name)
self.ids.Bxxx.add_widget(self.tbutton)
elif brand_name[0] == "C" or brand_name[0] == "c":
self.tbutton = MyToggle(id=brand_name, text=brand_name)
self.ids.Cxxx.add_widget(self.tbutton)
....
def reset_state(self):
print(self.ids)
print(self.ids.Axxx.ids)
for i in all_brand: # all brand includes all ids of ToggleButton added in AddWidget
self.ids[i].state = "normal"
в файле .kv,
<screenB>:
on_pre_enter:
root.reset_state()
Label:
id: aaa
Label:
id:bbb
StackLayout:
id: Axxx
StackLayout:
id: Bxxx
StackLayout:
id: Cxxx
...
Я пытался позвонить reset_state
перед входом в screenB. Затем я обнаружил, что self.ids
дал мне только aaa, bbb, Axxx, Bxxx, Cxxx, но ничего не добавлено в AddWidget
. И self.ids.Axxx.ids
дал мне пустой дикт. Но если я печатаю tbutton.id сразу после добавления ToggleButton, я получаю текущее возвращение.
Как мне тогда сбросить состояние всех ToggleButton? Спасибо большое !!