0
以下代码显示了我的两个选项菜单和回调函数'VarMenu'。这一切都工作得很好,除非我在每一行的循环中创建了几个相同的选项菜单。当其中只有一个变为'L'时,我只希望单元选项菜单的相应行更改为'N',而不是其中的每一个。在循环中更改单个OptionMenu的文本变量Tkinter
我不想将事情与列表或巨大的代码行混淆,但如果我创建了一个列表self.type = []会工作吗?
预先感谢您!
def VarMenu(self, selection):
if selection == "L":
self.variableunit.set("N")
self.unit.config(state=DISABLED)
else:
self.variableunit.set("mm")
self.unit.config(state=NORMAL)
def import_file(self): # Not complete code
for row_number, row_data in enumerate(info):
self.variable = StringVar(self.frame_table)
self.variable.set(pre(code))
self.type = OptionMenu(self.frame_table, self.variable, "None", "Clear", "F", "L", command=self.VarMenu)
self.type.grid(row=row_number+i, column=3, sticky="nsew", padx=1, pady=1)
# Unit drop down menu
self.unit = OptionMenu(self.frame_table, self.variableunit, "mm", "N")
self.unit.grid(row=row_number+i, column=5, sticky="nsew", padx=1, pady=1)
谢谢。我明白这是如何工作的,我一直在寻找更多的lambda,所以这是有道理的。但是,我必须为第二个选项菜单创建一个类似的事情来让它们一起更改吗? – user2063 2012-07-11 13:03:24
在这个例子中new_value对应什么?我试图合并变量单位,但它不适用于其他菜单。 – user2063 2012-07-11 14:15:19
'new_value'是选项菜单的新值;它是由tkinter传递给命令的标准参数。它会一直通过,你无法控制。 – 2012-07-11 14:20:06