Изменение цвета фона с помощью curselection () Tkinter - PullRequest
0 голосов
/ 08 июня 2018

Я столкнулся с проблемой, пытаясь изменить цвет фона, выбрав его в OptionMenu.Цвета просто не меняются, даже если я добавлю предложение else.

root=Tk()
root.geometry("200x200")
variative=IntVar()        
list=[1,2,3,4]
variative.set('Select')
listbox=OptionMenu(root,variative,list[0],list[1],list[2],list[3])
def Background(event):
    l=listbox.curselection()
    if l==1:
        root.config(bg='red')
    elif l==2:
        root.config(bg='yellow')
    elif l==3:
        root.config(bg='gray')
    elif l==4:
        root.config(bg='green')    
listbox.bind('<<ListboxSelect>>',Background)
listbox.pack()
root.mainloop()

1 Ответ

0 голосов
/ 08 июня 2018

OptionMenu не является Listbox, поэтому событие <<ListboxSelect>> никогда не происходит.Однако вы можете передать параметр команды в OptionMenu при ее создании.Эта команда будет вызываться каждый раз, когда в меню выбирается опция, и выбранная опция передается в аргументе.

Вот пример:

from tkinter import Tk, OptionMenu, IntVar
root = Tk()
variative = IntVar()        
option_list = [1,2,3,4]
variative.set('Select')

def background(sel):
    if sel == 1:
        root.config(bg='red')
    elif sel == 2:
        root.config(bg='yellow')
    elif sel == 3:
        root.config(bg='gray')
    elif sel == 4:
        root.config(bg='green')   

listbox = OptionMenu(root,variative, *option_list, command=background)
listbox.pack()
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...