Tkinter选项菜单

时间:2018-10-09 18:48:30

标签: python user-interface tkinter optionmenu

是否有一种方法可以获取OptionMenu的选择,而又不知道选择项保存在其中的StringVar的名称?

我有一个功能,可以自动创建更多的OptionMenu项,并为其变量赋予相同的名称。还将OptionMenu对象保存在列表中:

def addInternalPartipantList():
    global coworkerDict
    global f

    choiceVar1 = StringVar(window)
    choiceVar1.set('Vælg medarbejder')
    coworkerChoice = OptionMenu(window, choiceVar1, *coworkerDict)
    f += 1
    coworkerChoice.grid(column = 2, row = f)
    chosenCoworkers.append(coworkerChoice)

现在我可以做类似的事情了

chosenCoworkers[0].getVar().get()

要在特定的OptionMenu中找到选定的同事?

或者还有另一种方法可以指定要获取哪个值的choiceVar1吗?

如果与该问题的答案相关,则通过按钮调用该函数

1 个答案:

答案 0 :(得分:0)

这是一个简单的示例,说明当有人选择项目时如何检查值。

在OptionsMenu方法中使用命令引用函数时,该命令将自动传递选择为事件的值。这样,您实际上甚至可以在不知道StringVar的情况下使用该值进行操作。

import tkinter as tk

root = tk.Tk() 

def print_choice(event):
    print(choice_var.get()) # prints value based on choice var
    print(event)# prints selection directly from the event passed by the command in OptionMenu

working_list = ["Option 1", "Option 2", "Option 3", "Option 4"]
choice_var = tk.StringVar()
tk.OptionMenu(root, choice_var, *working_list, command=print_choice).pack()

root.mainloop()

这是另一个例子。如果将命令设置为一个函数,则创建多少个OptionsMenu都无所谓,您始终可以在不知道StringVar的情况下获得所选的值。

import tkinter as tk

root = tk.Tk() 

def print_choice(event):
    print(event)# prints selection directly from the event passed by the command in OptionMenu

working_list = ["Option 1", "Option 2", "Option 3", "Option 4"]

for i in range(4):
    tk.OptionMenu(root, tk.StringVar(), *working_list, command=print_choice).pack()

root.mainloop()
相关问题