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

tkinter使用OptionMenu出现function对象无set属性报错如何解决

错误原因

  • Tkinter的OptionMenu控件构造方法的第二个参数必须是绑定的变量对象(通常是StringVar/IntVar实例),你错误地将回调函数DoNothing放在了第二个参数位,导致tkinter尝试对这个函数调用.set()方法赋值选中值,触发第一个报错。
  • 你后续删除函数后,直接把选项字符串放在了第二个参数位,字符串没有.set()方法,因此触发第二个报错。

解决方法

  1. 把你提前定义好的DropdownMenuVar放在OptionMenu的第二个参数位,完成变量和下拉菜单的绑定
  2. 如果需要绑定选中选项后的触发回调,在OptionMenu构造的末尾追加command参数传入回调函数即可,注意回调函数需要预留一个参数,用来接收选中的选项值
  3. 如果不需要选中触发逻辑,省略command参数即可

修正后的可运行代码如下:

from tkinter import *
w = Tk()
w.geometry("250x250")
w.title("OptionMenu Testing")

# 回调函数预留参数接收选中的选项值
def DoNothing(selected_val):
    # 此处可补充选中后的业务逻辑
    pass

options = ["Option1", "Option2", "Option3"]
DropdownMenuVar = StringVar()
DropdownMenuVar.set("Option1")
# 第二个参数传绑定变量,末尾追加command传回调
DropdownMenu = OptionMenu(w, DropdownMenuVar, *options, command=DoNothing)
DropdownMenu.place(x=175, y=200)

w.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:15:03