如何在tkinter中的类内使用事件绑定,处理事件和自身

如何在tkinter中的类内使用事件绑定,处理事件和自身,tkinter,self,event-binding,Tkinter,Self,Event Binding,当我试图在类内绑定事件时,绑定事件会创建参数错误。代码写在下面- class Login_App(tk.Tk): def __init__(self): super().__init__() self.btn_lgin = ttk.Button(self, text="Login") self.btn_lgin.grid() self.btn_lgin.bind('<Return>', lam

当我试图在类内绑定事件时,绑定事件会创建参数错误。代码写在下面-

class Login_App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.btn_lgin = ttk.Button(self, text="Login")
        self.btn_lgin.grid()
        self.btn_lgin.bind('<Return>', lambda: Login(self=self))

    def Login(self):
        '''I need "Self" in some codes, cant remove it'''
        print("Clicked")

if __name__ == "__main__":
    app = Login_App()
    app.mainloop()
类登录应用程序(tk.tk):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.btn_lgin=ttk.按钮(self,text=“Login”)
self.btn_lgin.grid()
self.btn_lgin.bind(“”,lambda:Login(self=self))
def登录(自我):
''我在某些代码中需要“Self”,无法删除它''
打印(“单击”)
如果名称=“\uuuuu main\uuuuuuuu”:
app=Login\u app()
app.mainloop()

您只需做一点小改动:

调用带有
self
参数的函数时,类中的
self
不是实际参数,因此不需要将其作为一个参数传递
你应该做的是:

self.btn_lgin.bind('<Return>', lambda x: self.Login())
self.btn\u lgin.bind(“”,lambda x:self.Login())
请注意,当您更改此项时,您还应更改:
lambda:
lambda x:
,因为
lambda:
在传递零时获取一个位置参数,导致
TypeError