Как сделать чтобы при "ошибке" выдавался только один label в Tkinter?

Рейтинг: 0Ответов: 2Опубликовано: 19.08.2023

У меня есть код, который выдает ошибку когда кнопка нажата:

def click():
    if len(file_name.get()) == 0:
        Label(w, text='Поле file_name не должно быть пустым!', foreground='red').pack()

Button(w, text='Создать файл', command=click).pack()

Когда пользователь нажимает на кнопку, создается Label с текстом ниже кнопки, но если нажимать кнопку дальше, лейблы создаются бесконечно. Как можно сделать, чтобы всегда создавался только 1 лейбл?

Ответы

▲ 1

Отвечаю: Можно редактировать label каждый раз при ошибке:

w = Tk()

def click():
    #тут можем добавить условие if: .. else:
    error_label.config(text='error')

Button(w, text='text', command=click).pack()
error_label=Label(w,text='') # тут мы оставляем text пустым
error_label.pack() # нужно обязательно использовать .pack() / .grid() таким способом
▲ 0

Можно удалять Label каждый раз перед тем как создавать новый, что то типа такого:

def click():
    global error_label
    if error_label:
        error_label.destroy()
    if len(file_name.get()) == 0:
        error_label = Label(w, text='Поле file_name не должно быть пустым!', foreground='red')
        error_label.pack()