求助:TypeError报错——action()仅接受1个参数却传入2个
问题原因
Tkinter在触发绑定的事件(比如<<ComboboxSelected>>)时,会自动把事件对象作为第二个参数传递给回调函数。你的action方法只定义了self这一个参数,但实际调用时会传入两个参数(实例本身+事件对象),所以触发了类型错误。
解决方案
给action方法添加一个额外的参数来接收事件对象即可,即使你不需要用到这个参数:
方案1:显式添加event参数
修改后的action方法:
def action(self, event): self.SOURCE_SHUTTER = self.listeCombo.get() print(self.SOURCE_SHUTTER)
方案2:用*args接收任意多余参数
如果不想单独定义event参数,可以用*args来接收所有额外传入的参数:
def action(self, *args): self.SOURCE_SHUTTER = self.listeCombo.get() print(self.SOURCE_SHUTTER)
两种方案都能解决这个报错,选哪个取决于你是否需要用到事件对象里的信息(比如事件触发的组件、鼠标位置等)。
内容的提问来源于stack exchange,提问作者m4lou
相关产品推荐
相关产品推荐

