从多个 tkinter 选项菜单中获取值

Get values from multiple tkinter option menus

我需要遍历在 for 循环中创建的选项菜单,并在按下按钮时将它们的值存储到列表中。

我有一个 for 循环,它生成动态数量的选项菜单(两列,多行)。这是我的 GUI 以供参考:imgur link

我将选项菜单标识和字符串变量标识存储在列表中: self.obox_Type_idxself.obox_Role_idx

这是我的代码:

for i in range(0,num_vars):
    self.lbl_VarName = Label(self.frm_widgets, text=X_columns[i], anchor='w')
    self.lbl_VarName.grid(row=i, column=0, sticky='news', padx=(0,20))

    typeopt = StringVar()
    obox_Type = OptionMenu(self.frm_widgets, typeopt, *self.obox_Type_input)
    obox_Type.config(width=15)
    obox_Type.grid(row=i, column=1, sticky='news', padx=(60,0))
    typeopt.set("numerical") #default value
    self.obox_Type_idx.append((obox_Type, typeopt))

    roleopt = StringVar()
    obox_Role = OptionMenu(self.frm_widgets, roleopt, *self.obox_Role_input)
    obox_Role.config(width=15)
    obox_Role.grid(row=i, column=2, sticky='news')
    roleopt.set("feature") #default value
    self.obox_Role_idx.append((obox_Role, roleopt))

这是 self.obox_Type_idx 中的条目示例: (<tkinter.OptionMenu object .!frame.!canvas.!frame.!optionmenu2>, <tkinter.StringVar object at 0x09835870>)

所以我的目标是遍历“类型”列并存储所有选项菜单选择,以便在按下另一个按钮时列出。其自身列表中的 Role 列也是如此。我可以向选项菜单添加命令以使其打印所选值,但我需要能够遍历不同的菜单并获取它们的特定值。

你所要做的就是遍历[=​​11=]并使用StringVarget方法来获取选项菜单的当前选择:

def on_press(self):
     self.list_Role = [var.get() for menu, var in self.obox_Role_idx]

并创建一个命令为 on_press 的按钮。按下此按钮时,所选角色列表将存储在 self.list_Role.