tkinter使用OptionMenu出现function对象无set属性报错如何解决
错误原因
- Tkinter的
OptionMenu控件构造方法的第二个参数必须是绑定的变量对象(通常是StringVar/IntVar实例),你错误地将回调函数DoNothing放在了第二个参数位,导致tkinter尝试对这个函数调用.set()方法赋值选中值,触发第一个报错。 - 你后续删除函数后,直接把选项字符串放在了第二个参数位,字符串没有
.set()方法,因此触发第二个报错。
解决方法
- 把你提前定义好的
DropdownMenuVar放在OptionMenu的第二个参数位,完成变量和下拉菜单的绑定 - 如果需要绑定选中选项后的触发回调,在
OptionMenu构造的末尾追加command参数传入回调函数即可,注意回调函数需要预留一个参数,用来接收选中的选项值 - 如果不需要选中触发逻辑,省略
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
相关产品推荐
相关产品推荐

