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

python tkinter optionmenu

18995 просмотра

1 ответ

51 Репутация автора

Я пишу код в Python 2.7.8, который включает в себя 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которая вызывает функцию при изменении параметра и получает возможные параметры из списка?

Автор: Paul McDonald Источник Размещён: 04.11.2014 08:25

Ответы (1)


6 плюса

13294 Репутация автора

Решение

Нет необходимости в прямом вызове, поэтому он устарел в версии 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)
Автор: Terry Jan Reedy Размещён: 04.11.2014 10:15
Вопросы из категории :
32x32