Во-первых: не делайте
usr = Entry().pack()
, потому что он принимает None
до usr
, потому что pack()
всегда возвращает None
, и тогда у вас нет доступа к Entry
дляполучить имя пользователя и его пароль.Вы должны сделать это в два шага
usr = Entry()
usr.pack()
Для ярлыков и кнопок вы можете даже пропустить переменные, потому что они вам не нужны.
Второе: вы можете получить доступ к функции для кнопкииспользуя command=function_name
.Это должно быть имя без ()
(так называемое "callback"
).
tk.Button(mainframe, text="Log in", command=ask_user)
Когда вы нажимаете кнопку, тогда mainloop
запускается ask_user()
А внутри ask_user
вы можете получить значения из Entry
, используя .get()
username = usr.get()
password = pwd.get()
Полный код:
import tkinter as tk
# --- functions ---
def ask_user():
username = usr.get()
password = pwd.get()
if username == "Ed" and password == "true":
app()
if username == "buxton" and password == "logix":
app()
else:
root.destroy()
# --- main ---
root = tk.Tk()
mainframe = tk.Frame(root)
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
mainframe.pack(pady=100, padx=100)
tk.Label(mainframe, text="Username").pack()
usr = tk.Entry(mainframe)
usr.pack()
tk.Label(mainframe, text="Password").pack()
pwd = tk.Entry(mainframe)
pwd.pack()
tk.Button(mainframe, text="Log in", command=ask_user).pack()
root.mainloop()