我有一个登录框架类,我要添加到根窗口。我想要做的是检测何时从登录框点击按钮(在代码中标记为:#检测登录用户名和密码,然后退出按钮点击这里)。这样做的目的是使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()发布于 2014-11-06 02:11:49
你想要的都说不通。lf = ...和root.mainloop()之间不应该有任何代码。wqy的工作是创建小部件并将命令绑定到它们,然后tkinter将在单击小部件时调用这些命令。
如果您希望在用户单击登录按钮后发生某些事情,请将命令与其关联起来,并将您想要执行的任何代码放入该命令中。
发布于 2014-11-06 00:28:44
您需要它有一个名为回调的命令。
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
我会让你知道退出按钮,我不想做任何事情,它会帮助你自己做一些。
https://stackoverflow.com/questions/26769705
复制相似问题