Как показать только предварительный просмотр в OptionMenu Tkinter python?

скажем, я создаю и OptionMenu:

menu1 = OptionMenu(root, var, *list1, command = func ).pack()

с функцией func(), которая возвращает выбор:

def func(value):
   return value

если список list1 отформатирован:

list1 =  [["one", "two", "three"], ["four", "five", "six"]]

как я могу показать только первый индекс каждого подсписка в выпадающем OptionMenu, при этом возвращая весь подсписок при выборе с помощью метода func()?


person Luke Katfish Daniels    schedule 30.01.2017    source источник
comment
Возврат значения из func бессмысленен, поскольку код, вызывающий функцию (цикл обработки событий), игнорирует возвращаемое значение.   -  person Bryan Oakley    schedule 30.01.2017
comment
@BryanOakley, что ты тогда предлагаешь?   -  person Luke Katfish Daniels    schedule 30.01.2017


Ответы (1)


Если вы хотите получить выбранное значение, просто используйте var.get(). И если вы не хотите отображать список, а только первое значение, вы можете использовать словарь, чтобы связать каждый пункт меню с правильным списком:

import tkinter as tk

root = tk.Tk()

dic = {"one": ["one", "two", "three"], "four": ["four", "five", "six"]}

var=tk.StringVar(root)

def func(arg):
    print(dic[arg])

menu1 = tk.OptionMenu(root, var, *dic.keys(), command=func).pack()

root.mainloop()
person j_4321    schedule 30.01.2017