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

Я новичок в программировании, изучил синтаксис Python. Застрял в моей первой программе с графическим интерфейсом!

Вот мой код:

#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 аргумент (я), но вы даете ей 2, себя и это событие, из-за привязки к клавише ввода. Думал, что объясню это, поскольку я не думал, что данный ответ был ясен относительно того, почему он исправляет ошибку. ваше здоровье!   -  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