Python 使用双变量创建选项菜单的动态列表
我正在尝试用Tkinter制作选项菜单列表。 这个想法是,菜单是根据长度可以变化的数据创建的,所以我需要创建选项菜单的动态列表。 我有一些关于这种情况的简单例子,而不是我正在使用的最终代码。 问题是,我并没有成功地创建StringVars数组,这样我就可以为每一行创建单独的值。在这个示例中,变量对于所有行都是通用的,因为我无法在StringVar列表不产生错误的版本中执行此操作 下面是一个例子:Python 使用双变量创建选项菜单的动态列表,python,tkinter,Python,Tkinter,我正在尝试用Tkinter制作选项菜单列表。 这个想法是,菜单是根据长度可以变化的数据创建的,所以我需要创建选项菜单的动态列表。 我有一些关于这种情况的简单例子,而不是我正在使用的最终代码。 问题是,我并没有成功地创建StringVars数组,这样我就可以为每一行创建单独的值。在这个示例中,变量对于所有行都是通用的,因为我无法在StringVar列表不产生错误的版本中执行此操作 下面是一个例子: from Tkinter import * list1 = ['001 aaa', '002 bb
from Tkinter import *
list1 = ['001 aaa', '002 bbb', '003 ccc']
status = ["On", "Off", "Unknown"]
testset1 = []
master = Tk()
variable = StringVar(master)
r = 0
for x in list1:
x = x.split(" ", 2)
Label(text=x[0], relief=RIDGE, anchor=W).grid(row=r, column=0, sticky=W+E)
Label(text=x[1], relief=RIDGE, anchor=W).grid(row=r, column=1, sticky=W+E)
apply(OptionMenu, (master, variable) + tuple(status)).grid(row=r, column=2, sticky=W+E)
r += 1
mainloop()
这里是一个使用列表理解的解决方案:您只需要在辅助函数中创建OptionMenu并返回您使用的变量
from Tkinter import *
list1 = ['001 aaa', '002 bbb', '003 ccc']
status = ["On", "Off", "Unknown"]
master = Tk()
def create_option(r, x):
x = x.split(" ", 2)
variable = StringVar(master)
Label(master, text=x[0], relief=RIDGE, anchor=W).grid(row=r, column=0, sticky=W+E)
Label(master, text=x[1], relief=RIDGE, anchor=W).grid(row=r, column=1, sticky=W+E)
OptionMenu(master, variable, *status).grid(row=r, column=2, sticky=W+E)
return variable
variables = [create_option(r,x) for r, x in enumerate(list1)]
root.mainloop()