Class menu in Tkinter Gui

11,024

Yes, it's possible:

import tkinter as tk
# import Tkinter as tk  # if using python 2
import sys

class MenuBar(tk.Menu):
    def __init__(self, parent):
        tk.Menu.__init__(self, parent)

        fileMenu = tk.Menu(self, tearoff=False)
        self.add_cascade(label="File",underline=0, menu=fileMenu)
        fileMenu.add_command(label="Exit", underline=1, command=self.quit)

    def quit(self):
        sys.exit(0)

class App(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        menubar = MenuBar(self)
        self.config(menu=menubar)

if __name__ == "__main__":
    app=App()
    app.mainloop()
Share:
11,024
Bruno
Author by

Bruno

Updated on June 04, 2022

Comments

  • Bruno
    Bruno almost 2 years

    I'm working on a Gui and I'd like to know if it is possible to make the menu property of a window a separate class on my script for a clearer and more enhancement prone code.

    my code currently is :

    class Application(Frame):
       """ main window application """
       def __init__(self, boss = None):
       (...)
       self.menu = Menu(self)
       self.master.config(menu = self.menu)
    
       self.select = Menu(self.menu)
       self.menu.add_cascade(label = 'Select', menu = self.select)
       self.select.add_command(label = 'Select all', command = self.select_all)
       ...
    

    And I would prefer something like :

    class MenuBar:
    
        # all the content of the menu here
    
    class Application(Frame):
       (...)
       self.menu = MenuBar(self) ?
    

    rgds,