TTK检测按钮点击

时间:2014-11-06 00:23:21

标签: python tkinter

我有一个登录框架类,我将其添加到根窗口。我想要做的是检测从登录框中点击按钮的时间(在代码中标记为:#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()

2 个答案:

答案 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将在单击小部件时调用命令。

如果您希望在用户单击登录按钮后发生某些事情,请将命令与其关联,并将要执行的任何代码放在该命令中。