[Tkinter-discuss] Cascade menu issue

Jeff Epler jepler at unpythonic.net
Wed Aug 23 04:28:32 CEST 2006


The "activate_cascade" code seems to accomplish what you want.  I tested it
only on Ubuntu 5.10, so your mileage may vary with different Linux
distributions and Tk versions.

Jeff

# ----------------------------------------------------------------------
import Tkinter

app = Tkinter.Tk()
menubar = Tkinter.Menu(app)
app.configure(menu=menubar)

# ----------------------------------------------------------------------
# Here's the important bit
activate_cascade = """\
    if {[%W cget -type] != {menubar} && [%W type active] == {cascade}} {
        %W postcascade active
    }
"""
app.bind_class("Menu", "<<MenuSelect>>", activate_cascade)
# ----------------------------------------------------------------------

# Some testing code
filemenu = Tkinter.Menu(menubar)
menubar.add_cascade(label="File", menu=filemenu)

newmenu = Tkinter.Menu(filemenu)
filemenu.add_cascade(label="New", menu=newmenu)

newmenu.add_command(label="Text")
newmenu.add_command(label="Image")
newmenu.add_command(label="Folder")

filemenu.add_command(label="Quit", command=app.destroy)

app.mainloop()
# ----------------------------------------------------------------------


More information about the Tkinter-discuss mailing list