Tkinter: disable menu items while running

Pierre Quentel quentel.pierre at wanadoo.fr
Fri Jan 16 12:40:08 CET 2004


Menu widgets have an index, used to get/set their properties
There must be more elegant solutions, but this should work :

----------------------
from Tkinter import *

root=Tk()

def hello():
    print "hello !"

def toggle():
    if submenu.entrycget(0,"state")=="normal":
        submenu.entryconfig(0,state=DISABLED)
        submenu.entryconfig(1,label="Speak please")
    else:
        submenu.entryconfig(0,state=NORMAL)
        submenu.entryconfig(1,label="Quiet please")

menubar = Menu(root)

submenu=Menu(menubar,tearoff=0)

submenu2=Menu(submenu,tearoff=0)
submenu2.add_command(label="Hello", command=hello)

# this cascade will have index 0 in submenu
submenu.add_cascade(label="Say",menu=submenu2,state=DISABLED)
# these commands will have index 1 and 2
submenu.add_command(label="Speak please",command=toggle)
submenu.add_command(label="Exit", command=root.quit)

menubar.add_cascade(label="Test",menu=submenu)

# display the menu
root.config(menu=menubar)
root.mainloop()
----------------------Hope this helps,
Pierre





More information about the Python-list mailing list