Tkinter绑定Entry与函数报错:需1个参数却传入2个的解决方法
Tkinter绑定Entry回车事件报错的解决方法
你遇到的报错是因为Tkinter的bind方法在触发事件时,会自动把事件对象作为第二个参数传递给绑定的函数,但你的main方法只定义了self这一个参数,导致参数数量不匹配。
解决方法有两种:
方法一:给main方法添加event参数
直接修改main的定义,让它接受额外的event参数(即使你用不到这个参数),可以给参数设默认值,这样手动调用main()也不会出错:
def main(self, event=None): self.word= self.getUserInput() self.word = self.word.lower() resultA = self.y.checkWord(self.word) firstAlpha = self.y.getFirstAlpha(self.word) self.checkPrint(resultA) resultB = self.checkAlpha(firstAlpha) self.changeCondition(resultA, resultB) self.displayRecord(resultA, resultB, self.word) self.y.getTotalChar(resultA, resultB, self.word)
方法二:用lambda包装绑定的函数
修改bind那一行,用lambda接收事件对象但不传递给main:
self.entry_1.bind('<Return>', lambda event: self.main())
这个问题不是单独main方法或者bind代码的问题,而是两者的参数约定不匹配——bind会多传一个事件参数,但你的方法没接收。上面两种方法任选其一就能解决。
内容的提问来源于stack exchange,提问作者わんわんワコワコ
相关产品推荐
相关产品推荐

