You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter实现OptionMenu选中项插入Entry框及TypeError报错解决

报错根因

Tkinter OptionMenu组件通过command参数绑定回调时,会自动将当前选中的选项值作为1个位置参数传入回调函数。你定义的show()函数未设置接收该参数的形参,因此触发参数数量不匹配的报错:

TypeError: show() takes 0 positional arguments but 1 was given

修复方法

给show()函数添加接收传值的位置形参即可,修复后代码如下:

from tkinter import *
import tkinter

root = Tk()
root.title('example')
root.geometry("500x400")

plan = Entry(
    bd = 0,
    bg = "#d9d9d9",
    highlightthickness = 0,
    font='halvetica 12')
plan.insert(tkinter.END, "")
plan.pack()

clicked = StringVar()
clicked.set('Plans')
days = ["mon", 'Tue', "WED", "thur"]

# 增加形参接收OptionMenu自动传入的选中项值
def show(selected):
    plan.delete(0, END)
    # 可直接使用传入的选中值,无需额外调用clicked.get()
    plan.insert(tkinter.END, selected)

drop = OptionMenu(root, clicked, *days, command=show)
drop.pack()

root.mainloop()
  • 如果你不需要使用这个自动传入的参数,也可以将形参命名为_表示忽略传值,即定义为def show(_):,同样可以解决报错。

内容的提问来源于stack exchange,提问作者Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 06:51:23