как проверить, существует ли виджет кнопки [kivy]

#python-3.x #kivy

#python-3.x #kivy

Вопрос:

Я создаю кнопки динамически. Постоянно при get_username() вызове функции. И каждый раз кнопки дублируются, но я бы хотел, чтобы добавлялись только новые. Как я могу это сделать?

 class Curs(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    def get_username(self):
        with conn:
            cursor=conn.cursor()
            sql=f'''SELECT name_courses
            FROM [courses]
            '''
            cursor.execute(sql)
            results = cursor.fetchall()
            print(results)
            for i in range(len(results)):
                self.ids['test'].add_widget(Button(text=str(results[i][0]),size_hint_y=None,id=str(i)))
  

Ответ №1:

Вы можете clear_widgets() перед созданием.

 class Curs(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    def get_username(self):
        with conn:
            cursor=conn.cursor()
            sql=f'''SELECT name_courses
            FROM [courses]
            '''
            cursor.execute(sql)
            results = cursor.fetchall()
            print(results)
            self.ids['test'].clear_widgets()
            for i in range(len(results)):
                self.ids['test'].add_widget(Button(text=str(results[i][0]),size_hint_y=None))