这里我有一个基本的OptionsMenu和一个列表,里面有我的菜单选项。我需要做的是在选项菜单中仅显示子列表的第一项,但是当选择该项时,将子列表中的第二项传递给函数。
目前我可以显示所有子列表并将所有子列表传递给一个函数。我遇到的主要问题是试图显示第一项" ID 1"或" ID 2"在下拉菜单中。
import tkinter as tk
root = tk.Tk()
def print_data(x):
print(x[1])
example_list = [["ID 1", "Some data to pass later"], ["ID 2", "Some other data to pass later"]]
tkvar = tk.StringVar()
tkvar.set('Select ID')
sellection_menu = tk.OptionMenu(root, tkvar, *example_list, command=print_data)
sellection_menu.config(width=10, anchor='w')
sellection_menu.pack()
root.mainloop()
这就是我得到的:
我想要的是什么:
正如您在第二张图片中所看到的,只有" ID 1"菜单中显示该ID的数据并打印到控制台。
我找不到任何文档或帖子来解决这个问题所以可能无法实现。
答案 0 :(得分:1)
我能想到的唯一方法就是这个
import tkinter as tk
root = tk.Tk()
执行一个带有第一个索引的for循环,即ID
sellection_menu = tk.OptionMenu(root, tkvar,
*[ID[0] for ID in example_list],
command=print_data)
搜索给定的索引,但这很慢,如果使用大量数据则不太好
def print_data(x):
for l in example_list:
if x == l[0]:
print(l[1])
break
example_list = [["ID 1", "Some data to pass later"],
["ID 2", "Some other data to pass later"]]`