我有一个登录框架类,我将其添加到根窗口。我想要做的是检测从登录框中点击按钮的时间(在代码中标记为:#Detect login with username and password and quit button click here here)。这样做的目的是使ui与身份验证方法分开。我该怎么做?谢谢你的到来。
代码如下:
class LoginFrame(ttk.Frame):
def __init__(self, parent):
login_frame = ttk.Frame(parent)
login_frame.pack(pady=70)
logo = ttk.Label(login_frame, text="Login")
logo.grid(row=0, column=0, columnspan=2, pady=10)
username = ttk.Entry(login_frame)
username.grid(row=20, column=0, columnspan=2, padx=10, pady=10, sticky="ew")
password = ttk.Entry(login_frame)
password.configure(show="#")
password.grid(row=30, column=0, columnspan=2, padx=10, pady=10, sticky="ew")
login_btn = ttk.Button(login_frame, text="Login", command=self.authenticate)
login_btn.grid(row=40, column=0, columnspan=1, padx=10, pady=10, sticky="ew")
quit_btn = ttk.Button(login_frame, text="Quit", command=self.quit_app)
quit_btn.grid(row=40, column=1, columnspan=1, padx=10, pady=10, sticky="ew")
error_lbl = ttk.Label(login_frame, justify="center", foreground="#FF0000")
error_lbl.grid(row=50, column=0, columnspan=2, padx=10, pady=10, sticky="ew")
username.focus_set()
def authenticate(self):
#return login button is clicked with username and password
pass
def quit_app(self):
#return quit button is clicked
pass
root = Tk()
root.config(background="light grey")
root.resizable(width=False, height=False)
root.geometry("800x500")
lf = LoginFrame(root)
#Detect login with username and password and quit button click here
root.mainloop()
答案 0 :(得分:3)
你需要它有一个叫做回调的命令。
login_btn = ttk.Button(login_frame, text="Login")
login_btn.grid(row=40, column=0, columnspan=1, padx=10, pady=10, sticky="ew", command=authenticate)
注意新部分command=authenticate
命令可以设置为任何方法
http://effbot.org/zone/tkinter-callbacks.htm
我会让你弄清楚退出按钮,我不想做任何事情,这样做有帮助。
答案 1 :(得分:2)
你提出的问题没有意义。 lf = ...
和root.mainloop()
之间不应该有任何代码。 wqy GUI的工作原理是你创建小部件并将命令绑定到它们,然后tkinter将在单击小部件时调用命令。
如果您希望在用户单击登录按钮后发生某些事情,请将命令与其关联,并将要执行的任何代码放在该命令中。