Как сделать так, чтобы кнопка в tkinter выполняла свою команду?
Имеется вот такой код:
uslog = tk.Entry(login, width=20, font="Calibri 20")
uslog.place(x=60, y=100)
atg = uslog.get()
def logging(uslog, atg):
print(atg)
text1 = tk.Label(login, text="Введите ваш пароль:", font="Calibri 12", bg="limegreen")
text1.place(x=60, y=140)
uspass = tk.Entry(login, width=20, font="Calibri 20")
uspass.place(x=60, y=165)
reg_butt = tk.Button(login, width=16, height = 1, text="Зарегистрироваться", bg="cyan", command=logging(uslog, atg))
reg_butt.place(x=145, y=210)
Но почему то logging() не вызывается при нажатии на кнопку регистрации
что делать?
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Функция не вызывается потому, что вы и так её уже позвали когда создавали кнопку.
reg_butt = tk.Button( .... command=logging(uslog, atg))
# ^^^^^^^^^^^^
# это вызов
Чтобы передать функцию с аргументами как обработчик события, надо её поместить в lambda, например.
reg_butt = tk.Button( .... command=lambda: logging(uslog, atg))
Второе... Значение atg надо доставать непосредственно в функции-обработчике. Там где оно у вас сейчас достаётся оно всегда пустое, и нет смысла передавать его как аргумент функции.
Итого:
def logging(uslog):
atg = uslog.get()
print(atg)
....
reg_butt = tk.Button( .... command=lambda: logging(uslog))