繁体   English   中英

Tkinter 选项菜单

[英]Tkinter optionmenu

有没有办法在不知道保存选择的 StringVar 的名称的情况下选择 OptionMenu?

我有一个函数可以自动创建更多的 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的值?

该函数由按钮调用,如果这与此问题的答案有任何相关性

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

当您使用命令引用 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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM