Ткинтер вариантменю - PullRequest
       21

Ткинтер вариантменю

0 голосов
/ 09 октября 2018

Есть ли способ получить выбор 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 голосов
/ 09 октября 2018

Вот простой пример того, как вы можете проверить значение, когда кто-то выбирает элемент.

Когда вы используете команду для ссылки на функцию в методе 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()
...