Разные цвета для разных вариантов в меню опций tkinter
Я использую Python и Tkinter. У меня есть меню опций с тремя вариантами, при этом "on" является одним из них. Я хочу, чтобы "вкл." Было зеленым, когда я его выбираю. Я не имею в виду шрифт. Я хочу, чтобы фон меню параметров был зеленым, когда я выбираю "вкл.", Тогда как остальные параметры будут по умолчанию серыми.
Как я могу это сделать? Я видел другие посты, которые просто делают весь фон меню параметров другим цветом, но я хочу, чтобы цвет был выбран только при выборе определенного варианта. Спасибо!
3 ответа
Подайте это под U, для уродливого:
from Tkinter import *
OPTIONS = (
"egg",
"go",
"spam"
)
controlsMap = {}
root = Tk()
def callbackFunc(name, index, mode):
value = root.getvar(name) #getvar: return the value of Tcl variable NAME
widget = controlsMap[name]
if value == 'go':
widget.config(bg='green',fg='black',
activebackground='green',
activeforeground='black')
else:
widget.config(bg='SystemButtonFace',fg='SystemButtonText',
activebackground='SystemButtonFace',
activeforeground='SystemButtonText')
var1 = StringVar(root, name='var1') #give it a master and a name
var1.set(OPTIONS[0])
om1 = OptionMenu(root, var1, *OPTIONS)
om1.config(width=5)
om1.grid(row=0, column=0)
controlsMap['var1'] = om1
var1.trace_variable('w', callbackFunc)
var2 = StringVar(root, name='var2') #
var2.set(OPTIONS[0])
om2 = OptionMenu(root, var2, *OPTIONS)
om2.config(width=5)
om2.grid(row=0, column=1)
controlsMap['var2'] = om2
var2.trace_variable('w', callbackFunc)
var3 = StringVar(root, name='var3') #
var3.set(OPTIONS[0])
om3 = OptionMenu(root, var3, *OPTIONS)
om3.config(width=5)
om3.grid(row=0, column=2)
controlsMap['var3'] = om3
var3.trace_variable('w', callbackFunc)
root.mainloop()
Если вы находитесь на окнах, вам не повезло, потому что меню - это встроенные элементы управления, которые не допускают такой настройки. То же самое можно сказать и об osx, но я точно не помню.
Для других платформ вы можете использовать метод entryconfigure меню, связанного с меню опций, который позволяет вам установить цвет фона каждой записи в меню.
Вы можете оставить след на нем:
from Tkinter import *
OPTIONS = (
"egg",
"go",
"spam"
)
root = Tk()
var = StringVar()
var.set(OPTIONS[0]) # default
def callbackFunc(name, index, mode):
value = var.get()
if value == 'go':
om.config(bg='green',fg='black',
activebackground='green',
activeforeground='black')
else:
om.config(bg='SystemButtonFace',fg='SystemButtonText',
activebackground='SystemButtonFace',
activeforeground='SystemButtonText')
om = OptionMenu(root, var, *OPTIONS)
om.pack()
Callbackname = var.trace_variable('w', callbackFunc)
root.mainloop()