Добавление команды в Tkinter OptionMenu?

Я пишу код в Python 2.7.8, который включает в OptionMenu виджет OptionMenu . Я хотел бы создать OptionMenu который вызывает функцию при изменении параметра, но также хочу, чтобы возможные варианты были найдены в списке, так как у моего окончательного OptionMenu будет много вариантов.

Я использовал следующий код для создания OptionMenu который вызывает функцию:

 from Tkinter import* def func(value): print(value) root = Tk() var = StringVar() DropDownMenu=OptionMenu(root, var, "1", "2", "3", command=func) DropDownMenu.place(x=10, y=10) root.mainloop() 

Я также нашел следующий код, который создает OptionMenu с опциями, найденными в списке:

 from Tkinter import* root = Tk() Options=["1", "2", "3"] var = StringVar() DropDownMenu=apply(OptionMenu, (root, var) + tuple(Options)) DropDownMenu.place(x=10, y=10) root.mainloop() 

Как мне создать OptionMenu который вызывает функцию при изменении параметра и получает возможные варианты из списка?

  • Почему Photoimage работает медленно?
  • Матрица с изображением на tkinter Canvas
  • Tkinter: настройка метода для динамически генерируемых меток
  • Звуки завершаются до следующего, в python?
  • Как вы проверяете, имеет ли виджет фокус в Tkinter?
  • Значок изменения в окне фигуры Matplotlib
  • ttk.OptionMenu () отображение галочки во всех меню
  • Приложение Python Tkinter вызывает ошибку fork () / exec () в Mac OS X
  • One Solution collect form web for “Добавление команды в Tkinter OptionMenu?”

    Нет необходимости в прямом обращении к вызову, поэтому он объявлен в 2.7 и ушел в 3.0. Вместо этого используйте синтаксис * seq. Совместите две вещи, которые вы сделали. Кажется, что вы делаете то, что хотите.

     from tkinter import * def func(value): print(value) root = Tk() options = ["1", "2", "3"] var = StringVar() drop = OptionMenu(root, var, *options, command=func) drop.place(x=10, y=10) 
    Python - лучший язык программирования в мире.