Я новичок в python, обычно, если я хочу добавить в мое меню дополнительное меню, я бы сделал что-то вроде этого.Более сжатый способ настройки меню опций tkinter?
from Tkinter import*
root=Tk()
mylist=['a','b','c']
var=StringVar(root)
var.set("Select status")
mymenu=OptionMenu(root,var,*mylist)
mymenu.pack()
mymenu.config(font=('calibri',(10)),bg='white',width=12)
mymenu['menu'].config(font=('calibri',(10)),bg='white')
root.mainloop()
Он отлично работает, но мне интересно, есть ли более короткий путь, чтобы достичь того же результата, как каждого меню опций займет 7 строк кода. Мне нужно создать несколько меню опций, поэтому я ищу правильный и более короткий способ сделать это.
EDIT: Кто-то указал на создание функции, которая будет генерировать меню опций. Так что я попытался это,
from Tkinter import*
def Dropmenu(mylist,status):
var=StringVar(root)
var.set(status)
mymenu=OptionMenu(root,var,*mylist)
mymenu.pack(side=LEFT)
mymenu.config(font=('calibri',(10)),bg='white',width=12)
mymenu['menu'].config(font=('calibri',(10)),bg='white')
root=Tk()
Dropmenu(['a','b','c'],'Select')
root.mainloop()
Но теперь, как я решить «вар», так что я могу извлечь все значения, которые выбрал пользователь? Согласно моему примеру, все меню параметров будет иметь одно и то же значение «var», поэтому у меня нет способа получить выбор, который пользователь сделал для другого меню опций.
Чтобы сделать вещи более ясно, скажем, если у меня есть 2 меню опций
Dropmenu(['a','b','c'],'Select')
Dropmenu(['c','d','e'],'Select')
Если я использую
myvalue=var.get()
Поскольку обе опции меню имеют такое же имя, Var, как я принести оба значения?
Каждый раз, когда у вас есть повторяющаяся задача, ваша первая мысль должна быть «Могу ли я определить функцию, чтобы упростить это?» – mgilson