Tkinter OptionMenu命令传参报错:参数数量不匹配(TypeError)
原因
tkinter的OptionMenu组件触发command回调时,会自动将当前选中的选项值作为额外参数传递给回调方法。你的update_tree方法仅定义了self一个参数,调用时会收到两个参数(self + 选中的选项值),因此触发TypeError。
解决方法
有两种常用处理方式:
方式1:为回调方法添加参数
直接修改update_tree的定义,接收额外参数(即使暂时用不到):
def update_tree(self, selected_value): # 可通过selected_value获取选中的选项,不需要则直接忽略 pass
方式2:用lambda包装回调忽略额外参数
如果不需要获取选中的选项值,可用lambda接收并忽略自动传入的参数,保持原方法定义不变:
self.db_table = tk.OptionMenu( self.frame, container.table_opt, *container.tables_list, command=lambda _: self.update_tree() )
这里的_是占位符,用来接收OptionMenu传入的选中值,不传递给update_tree。
内容的提问来源于stack exchange,提问作者Ivanmtt
相关产品推荐
相关产品推荐

