TypeError: приема точно 1 аргумент (2 дадени)

Нов съм в програмирането, научих синтаксиса на python. Заседнах в първата си GUI програма!

Ето моят код:

#User name

userLabel = Label(self.signView, text="User Name")
userLabel.grid(sticky = E)
self.userEntry = Entry(self.signView)
self.userEntry.grid(row=0, column=1)

self.labelUserVar = StringVar()
self.validLabel = Label(self.signView, textvariable=self.labelUserVar, 
                         anchor="w", fg="red")
self.validLabel.grid(row=0, column=2)
self.userEntry.bind("<Return>", self.CheckUser)

Ето следната функция CheckUser():

def CheckUser(self):
    self.labelUserVar.set("unavailable user name!")

Получих тази грешка.

TypeError: CheckUser() takes exactly 1 argument (2 given)

person Gabriel    schedule 27.09.2014    source източник
comment
Само за да разберете (ако все още не сте), грешката идва поради функцията, изискваща 1 аргумент (self), но вие й давате 2, self и това е събитие, поради обвързването с клавиша enter. Мислех, че ще го обясня, тъй като не смятах, че даденият отговор е ясен за това защо коригира грешката. наздраве!   -  person W1ll1amvl    schedule 28.09.2014


Отговори (1)


Функцията, която предавате на .bind() приема събитието като аргумент и ще да бъде подаден независимо дали имате нужда от него.

Променете дефиницията на функцията на

def CheckUser(self, event):
    self.labelUserVar.set("unavailable user name!")
person Sven Marnach    schedule 27.09.2014