Задать вопрос
@Devil_Evil2021

Как скрыть виджеты после их нажатия и выполнения действия?

На главном окне у меня будут: кнопка, поля ввода и несколько label. Как сделать так, чтобы после нажатия кнопки она исчезала(скрывалась), а затем появлялись остальные объекты.
То есть как авторизация: вводим логин, пароль, нажимаем "войти", всё скрывается и появляются другие компоненты, то есть будто вход выполнен.

Искал в интернете, но нашел только скрыть кнопку по нажатию или скрыть/показать label по нажатию на кнопку.
Можно ли, когда нажму на кнопку, сначала выполниться действие(показ всех остальных элементов), а потом все компоненты авторизации исчезнут?(или наоборот, сначала все исчезает, а потом появляются компоненты). То есть можно ли как-то скрыть все компоненты по 1 нажатию кнопки и как это реализовать или есть какой-то другой способ?

Функция hide_me скрывает кнопку через bind(), если кнопка не привязана к координатам, а так ничего не происходит.
Попробовал через lambda сделать, чтобы выполнить 2 функции сразу, но появляется ошибка.
btn=Button(text="Авторизация", command=lambda:(AUTO(),hide_me()))
TypeError: hide_me() missing 1 required positional argument: 'event'


from tkinter import *

def hide_me(event):
    event.widget.pack_forget()

root = Tk()
root.title("Авторизация")
root.geometry("500x250")
root.resizable(False, False)

l = "admin"
p = "password"

LOGIN = "Введите логин:"
LOGIN = Label(text=LOGIN, justify=LEFT)
LOGIN.place(x=0, y=0)

lineLOGIN = Entry()
lineLOGIN.pack()
lineLOGIN.place(x=80, y=30, anchor="c")

PASS = "Введите пароль:"
PASS = Label(text=PASS, justify=LEFT)
PASS.place(x=0, y=60)

linePASS = Entry()
linePASS.pack()
linePASS.place(x=80, y=90, anchor="c")

def AUTO():
    if lineLOGIN.get() == l and linePASS.get() == p:
        linePA = Entry()
        linePA.pack()
        linePA.place(x=200, y=70, anchor="c")
    else:
        print("Неверный логин/пароль") 

btn=Button(text="Авторизация", command=lambda:(AUTO(),hide_me()))
#btn.bind('<Button-1>', hide_me)
btn.pack()
btn.place(x=60, y=120, anchor="c")

root.mainloop()
  • Вопрос задан
  • 1093 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Alexa2007
def hide_me(widget):
    widget.destroy()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы