Tkinter OptionMenu DisplayOptions и значения присвоения

В Python Tkinter OptionMenu возможно ли иметь список параметров отображения, но при выборе он устанавливает значение как какое-то другое значение?

Предположим, у меня было

variable = tk.IntVar(master)
OptionMenu(master, variable, 1, 2).pack()
options = {1:"one",2:"two"}

и хотел отобразить значения, но присвоить ключ переменной. Это вообще возможно? Или есть способ связать OptionMenu для вызова функции при выборе для ее преобразования?

Моя реальная проблема более сложная, чем пример, поэтому проблема заключается только в оценке сложных строк, и я бы хотел избежать использования StringVar.

Спасибо


person Murphy4    schedule 20.12.2014    source источник


Ответы (1)


Он у вас уже есть. Используйте словарь, чтобы сопоставить отображаемые параметры с фактическими значениями, которые вы хотите.

EG:

import Tkinter as tk
master = tk.Tk()
variable = tk.StringVar(master)
options = {"one": 1, "two": 2}
tk.OptionMenu(master, variable, *options.keys()).pack()
...
wanted = options[variable.get()]

Обратите внимание на знак, *, используемый для распаковки ключей в виде списка аргументов, разделенных запятыми, для OptionMenu. Позже, когда вам понадобится «значение» опции, используйте variable.get() в качестве «ключа» в словаре.

person Mark Mikofski    schedule 20.12.2014
comment
Мне не хватало возможности для меню опций ссылаться на такой словарь. Это замечательно. Спасибо. - person Murphy4; 20.12.2014