基于Tkinter使用字典构建OptionMenu并获取选中值的技术问询
我来帮你搞定这个问题,你的代码有两个小关键点需要调整,咱们一步步来:
1. 设置OptionMenu的默认选中项
要让GUI启动时默认选中"one",只需要在创建variable后,调用variable.set("one")即可,这样打开界面时选项就会默认显示"one"。
2. 编写获取选中项对应值的函数
在sample函数里,你需要先通过variable.get()拿到当前选中的选项文本(也就是字典的key),然后去options字典里取对应的value。另外注意:你之前写的O_menu = OptionMenu(...).pack()会导致O_menu变成None,因为pack()方法返回的是None,如果之后不需要操作这个OptionMenu组件的话其实不影响,但如果要操作的话最好把组件创建和布局分开写(这是Tkinter的规范写法)。
修正后的完整代码
from tkinter import * root = Tk() # 设置变量并指定默认选中值 variable = StringVar(root) variable.set("one") # 这行实现默认选中"one" options = {"one": 1, "two": 2, "three": 3} # 分开创建和布局,避免O_menu变成None(更规范的写法) O_menu = OptionMenu(root, variable, *options.keys()) O_menu.pack() def sample(): # 获取当前选中的key,再取出对应的值 selected_key = variable.get() selected_value = options[selected_key] print(selected_value) bu = Button(root, text="print", command=sample) bu.pack() root.mainloop()
额外小提示
如果担心出现意外的KeyError(虽然这里OptionMenu的选项都是字典的key,理论上不会出现),可以改用options.get(selected_key, "无效选项")来做容错处理,这样即使有异常情况也不会直接崩溃。
内容的提问来源于stack exchange,提问作者Zeryab Hassan Kiani
相关产品推荐
相关产品推荐

