在循环Tkin中更改单个选项菜单的textvariable

2024-09-19 23:28:26 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码显示了我的两个选项菜单和回调函数“VarMenu”。除了我在循环中为每一行创建了几个相同的选项菜单之外,这一切都运行得很好。当其中只有一个更改为“L”时,我只希望将单元选项菜单的相应行更改为“N”,而不是将它们中的每一个更改为“N”。在

我不想把事情与列表或大量代码混淆太多,但是如果我创建了一个列表自身类型=[]这行吗?在

提前谢谢你!在

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)

Tags: 代码selfnumber列表def选项table菜单
1条回答
网友
1楼 · 发布于 2024-09-19 23:28:26

执行此操作时:

for row_number, row_data in enumerate(info):
    self.variable = StringVar(...)

。。。{你意识到你最近创建的那个?你怎么能指望它神奇地拥有不止一个变量?在

相反,您只需使用lambda或functools.partial将变量传递给回调。例如:

^{pr2}$

当然,您可以在回调中传递行号或任何其他信息。在

注意:OptionMenu被设计成当它调用你的回调时,它总是传递一个参数,即用户选择的新值。这个论点将永远存在。但是,您可以添加其他参数,如我的示例所示。在

相关问题 更多 >