通过curseelection()Tkin更改背景色

2024-10-01 07:38:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个问题,试图通过在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()

Tags: config颜色rootelsetklistbgbackground
1条回答
网友
1楼 · 发布于 2024-10-01 07:38:01

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()

相关问题 更多 >