如何用Python将多个Tkinter输入存入字典并设置不同值?
解决Tkinter多个下拉框值存入字典的问题
你的问题出在回调函数无法区分触发事件的下拉框,导致每次都把同一个选中值同时赋给字典的两个键。可以通过给回调函数传递额外的键标识,来分别更新对应的值,代码修改如下:
import tkinter as tk # 全局字典存储下拉框值,初始可设默认值 input_dict = {'aaa': '', 'bbb': ''} def callback(key, selection): input_dict[key] = selection print(input_dict) root = tk.Tk() opt = tk.StringVar() # 用lambda绑定键名'aaa',传递给回调函数 menu = tk.OptionMenu(root, opt, 'a', 'b', 'c', command=lambda val: callback('aaa', val)) opt1 = tk.StringVar() # 绑定键名'bbb' menu1 = tk.OptionMenu(root, opt1, 'a', 'b', 'c', command=lambda val: callback('bbb', val)) menu.pack() menu1.pack() root.mainloop()
关键说明:
- 把字典定义在全局作用域,这样可以持续保存两个下拉框的选中状态,不会每次回调都重新创建。
- 每个
OptionMenu的command参数用lambda包装,额外传递对应的字典键名('aaa'和'bbb'),让回调函数知道要更新哪个键的值。 - 回调函数接收键名和选中值,更新字典后打印,这样就能得到两个下拉框各自独立的选中值组合,比如
{'aaa': 'c', 'bbb': 'a'}。
内容的提问来源于stack exchange,提问作者Zalman
相关产品推荐
相关产品推荐

