Python Tkinter:动态添加下拉列表并获取其值
我根据用户输入动态添加下拉列表。用户将输入一个标题。标题中的每个单词都有一个与其相关联的同义词列表。Tkinter将根据用户输入动态添加同义词下拉列表。但是,我无法单独访问每个下拉列表的值 lists变量是包含用户输入中每个单词的同义词的列表列表Python Tkinter:动态添加下拉列表并获取其值,python,pandas,tkinter,Python,Pandas,Tkinter,我根据用户输入动态添加下拉列表。用户将输入一个标题。标题中的每个单词都有一个与其相关联的同义词列表。Tkinter将根据用户输入动态添加同义词下拉列表。但是,我无法单独访问每个下拉列表的值 lists变量是包含用户输入中每个单词的同义词的列表列表 def ok(): print ("value is:" + variable.get()) i = 0 while i < len(lists): OPTIONS = lists[i]
def ok():
print ("value is:" + variable.get())
i = 0
while i < len(lists):
OPTIONS = lists[i]
OPTIONS = OPTIONS.split(',')
variable = StringVar(master)
dropdown = OptionMenu(master, variable, *OPTIONS)
dropdown.pack(side=LEFT, fill=X, expand=YES)
button = Button(master, text="Swap", command=ok)
button.pack(side=LEFT, expand=YES)
i = i+1
def ok():
打印(“值为:”+变量.get())
i=0
而我(列出):
选项=列表[i]
OPTIONS=OPTIONS.split(“,”)
变量=StringVar(主)
下拉菜单=选项菜单(主、变量、*选项)
dropdown.pack(side=LEFT,fill=X,expand=YES)
按钮=按钮(主控,text=“Swap”,command=ok)
按钮包(侧边=左侧,展开=是)
i=i+1
有什么方法可以从我的下拉列表中访问设置的值吗?使用
选项菜单中的命令=
,您可以分配函数,当您更改选择时,该函数将获得选定值
import tkinter as tk
#--- functions ---
def on_select(text):
print('text:', text)
print('---')
#--- main ---
data = ['a,b,c', 'x,y,z']
root = tk.Tk()
for i, options in enumerate(data):
options = options.split(',')
op = tk.OptionMenu(root, tk.StringVar(), *options, command=on_select)
op.pack()
root.mainloop()
command=
在按钮中
期望函数不获取参数-即def on_select():
但command=
在选项菜单中
期望函数获取单个参数-即def on_select(文本):
此代码不需要variable=tk.StringVar()
所以,您已经选择了值,但不知道它是在哪个选项菜单中选择的-第一个还是第二个。使用lambda
您可以分配将获得更多参数的函数,并且您可以将数字作为第二个参数
import tkinter as tk
#--- functions ---
def on_select(text, number):
print('text:', text)
print('number:', number)
print('data[number]:', data[number])
print('---')
#--- main ---
data = ['a,b,c', 'x,y,z']
root = tk.Tk()
for i, options in enumerate(data):
options = options.split(',')
op = tk.OptionMenu(root, tk.StringVar(), *options, command=lambda text, number=i:on_select(text, number))
op.pack()
root.mainloop()
因此,现在第一个选项菜单在选择(文本,0)
时运行,第二个选项菜单在选择(文本,1)
时运行,这样函数就知道选择了哪个选项菜单,并且可以从数据中获得正确的值(或执行其他操作)
您还可以使用StringVar()
获取选定的值。如果需要所有选定值,则必须为每个选项菜单创建单独的StringVar
,并保留在列表中。单击按钮后,您可以使用for
循环变量列表来获取所有选定值
import tkinter as tk
#--- functions ---
def on_click():
for number, var in enumerate(all_variables):
print(number, '| selected:', var.get(), '| all:', data[number])
#--- main ---
data = ['a,b,c', 'x,y,z']
root = tk.Tk()
all_variables = []
for options in data:
options = options.split(',')
var = tk.StringVar()
all_variables.append(var)
op = tk.OptionMenu(root, var, *options)
op.pack()
b = tk.Button(root, text='OK', command=on_click)
b.pack()
root.mainloop()
每个OptionMenu
都需要自己的variable
-但是你只需要为所有OptionMenu
使用一个变量,而不是,而i
你可以使用作为列表中的选项:
,它不需要i
,谢谢你的回复,如何单独访问变量?如何为每个下拉列表指定自己的变量?在代码中,我看到了variable
。你是怎么创造的?你们知道如何保持列表中的元素吗?所以,在列表中保留变量。这对我很有效!但是,当我从下拉列表中选择项目时,下拉列表的默认值不会更改。有没有办法得到这个?默认值是多少?如果您需要在开始时选择一些值,那么您可以StringVar(value=options[0])