tkinter enable/disable menu tkinter enable/disable menu tkinter tkinter

tkinter enable/disable menu


You can enable or disable an entire menu by enabling or disabling the item it is connected to.

Here's a contrived example. Use the Test1 menu to enable or disable the Test2 menu.

import Tkinter as tkclass Example(tk.Frame):    def __init__(self, root):        tk.Frame.__init__(self, root)        self.menubar = tk.Menu()        self.test1Menu = tk.Menu()        self.test2Menu = tk.Menu()        self.menubar.add_cascade(label="Test1", menu=self.test1Menu)        self.menubar.add_cascade(label="Test2", menu=self.test2Menu)        self.test1Menu.add_command(label="Enable Test2", command=self.enable_menu)        self.test1Menu.add_command(label="Disable Test2", command=self.disable_menu)        self.test2Menu.add_command(label="One")        self.test2Menu.add_command(label="Two")        self.test2Menu.add_command(label="Three")        self.test2Menu.add_separator()        self.test2Menu.add_command(label="Four")        self.test2Menu.add_command(label="Five")        root.configure(menu=self.menubar)    def enable_menu(self):        self.menubar.entryconfig("Test2", state="normal")    def disable_menu(self):        self.menubar.entryconfig("Test2", state="disabled")if __name__ == "__main__":    root = tk.Tk()    root.geometry("500x500")    app = Example(root)    app.pack(fill="both", expand=True)    root.mainloop()


could use below as well... but I want to disable the parent menu, not the items one by one...

self.nMenu[0].entrycget(0, 'label')self.nMenu[0].entryconfigure('Quit', state=tk.DISABLED) self.nMenu[0].entryconfigure(0)