Как я могу передать информацию из динамически добавляемого виджета с помощью kivy?

#python #kivy #kivymd

Вопрос:

Я получаю данные обратно из конечной точки API, которую я использую для заполнения виджета ThreeLineListItem. Проблема в том, что я все еще не мог найти способ передать person['id'] , как в примере ниже:

 [...]  data = response.json() #response from an API request  if response.status_code == 200:  for person in data:  print(person['id'])  self.ids.person_mdlist.add_widget(  ThreeLineListItem(  text=str(person['name']),  secondary_text=str(person['document']),  tertiary_text=str(person['descript']),  on_release=lambda x: self.test(x),  ),)  

Мой план состоит в том, чтобы захватить выбранный идентификатор пользователя для будущих вызовов API. Есть ли простой способ сделать это?

Ответ №1:

Я сделал это! Поскольку у ThreeLineListItem нет никакого свойства «id», мне пришлось создать пользовательский виджет на его основе:

 class CustomThreeLineListItem(ThreeLineListItem):  list_id = NumericProperty(0)  

Затем:

 [...]  data = response.json() #response from an API request  if response.status_code == 200:  for person in data:  print(person['id'])  self.ids.person_mdlist.add_widget(  CustomThreeLineListItem(  list_id=person['id'],  text=str(person['name']),  secondary_text=str(person['document']),  tertiary_text=str(person['descript']),  on_release=lambda x: self.test(x),  ),)  

Надеюсь, это поможет кому-то в будущем.