в моем приложении я динамически создать аккордеон виджет и сохранить список индексов:Какие возможные триггеры обратного вызова доступны для изменения атрибута киевского аккордеона?
acc_panel = self.ids.acc_panel
tpitem = string.Template('''
AccordionItem:
id: '$acc_id'
title: '$acc_title'
font_name: 'Roboto'
min_space: 30
RstDocument:
background_color: 1, 1, 1, 1
source: '$rstdoc'
''')
for idx in range(0, self.totevents):
event = str(idx + 1)
acc_id = 'acc_' + event
evidx = 'Event' + event + ':'
rstdoc = qglobals.PROJDIR + tempInstrData[evidx]['RstDoc:']
acc_title = str(tempInstrData[evidx]['Instruction:'])
new_acc = tpitem.substitute(vars())
acc = Builder.load_string(new_acc)
acc_panel.add_widget(acc)
n = len(acc_panel.children)
for i in range (0,n):
acc_panel.children[i].collapse = True
acclabel[i+1] = n-1-i
acc_panel.children[n-1].collapse = False
accactive = 1
activeEvent = 1
self.change_accitem()
и в соответствующем файл кв у меня есть:
Accordion:
id: acc_panel
orientation: 'vertical'
min_space: 30
font_name: 'Roboto'
Теперь я хочу добавить некоторое действие на AccordionItem измените привязку нового элемента к функции обратного вызова. Я попытался использовать атрибут: on_collapse, но это не работает. Каковы возможности здесь?
Hi zeeMonkeez, спасибо за разъяснение. Однако я все еще боюсь. Так что если acc_panel содержит виджет аккордеона (acc_panel.add_widget (acc), то его дочерние элементы являются AccordionItems.Это правильно? Когда я затем привязываю всех этих детей в цикле к моему обратному вызову: acc_panel.children [idx] .bind (collapse = self.do_print), я ожидаю, что каждый раз, когда я нажимаю на название аккордеонита, будет напечатан соответствующий заголовок, но это происходит только для первого аккордеона. Что мне не хватает .... –
К сожалению, цикл выше. В самом деле, это действительно так и сейчас работает как прелесть. Еще раз спасибо. –