как использовать идентификаторы виджетов kivy с add_widget

#python #widget #kivy

#python #виджет #kivy

Вопрос:

Я хочу удалить виджет, который я добавил динамически с помощью add_widget () в function1 не в файле kv, моя проблема в том, что я не могу присвоить виджету идентификатор для его удаления в function2, когда я попытался добавить идентификатор, идентификатор не отображался в свойстве ids корневого, и я не нахожу его у дочерних элементов корневого виджета с помощью инструмента отладки, как будто его не существует, хотя он отображается на моем экране. Я хочу знать, как я могу создать и добавить виджет и получить к нему доступ с помощью идентификатора.

 self.root.get_screen('Third').add_widget(MDLabel(
                                                # id='titlesolution',
                                                text=f"Solutions",
                                                theme_text_color="Hint",
                                                halign='center',
                                                pos_hint={'center_x': 0.5,'center_y': 0.42}))
  

Ответ №1:

идентификаторы — это особенность языка kv, при создании экземпляра из Python эквивалентного свойства id не существует. Причина этого в том, что идентификаторы были бы избыточными на стороне Python, поскольку у вас автоматически появляется ссылка на любой виджет, который вы создаете.

Если вы хотите присвоить виджету идентификатор, вы можете просто использовать любое имя свойства, которое вам нравится, и добавить его в класс.

Если вы хотите получить доступ к дочерним элементам виджета, попробуйте widget.children просмотреть список напрямую.

идентификатор не отображался в свойстве ids корневого

На стороне Python нет четкого корня.