Also ich hatte das mit einer extra Menüklasse gemacht und dann wieder verworfen. Ich zumindest fand es unübersichtlicher, als wenn es in der RootGui ist. Ich bin dabei, mir momentan sozusagen eine Gui Vorlage zu erstellen, sodass ich sie für andere Projekte mitbenutzen kann.
Alles funktioniert bisher so weit, und es ist viel Strukturierter als davor.
Was ist eigentlich der Unterschied wenn man die RootGui mit tk.Tk oder als tk.Frame aufruft?
Die RootGui sieht momentan folgendermaßen aus:
Code: Alles auswählen
class RootGui(tk.Tk):
""" root gui of the program """
def __init__(self):
tk.Tk.__init__(self)
# classes
self.program_info = ProgramInfo()
self.license = License()
# config
self.attributes('-zoomed', True)
self.grid_columnconfigure(0, weight=1)
self['bg'] = '#000000'
self.title('{title} - {version}'.format(title=self.program_info.title,
version=self.program_info.version))
self.grid()
# menu bar
top = self.winfo_toplevel()
self.menubar = tk.Menu(top)
top['menu'] = self.menubar
self.menubar['bg'] = '#000000'
self.menubar['fg'] = '#ffffff'
self.menubar['font'] = ('Monospace', 10)
# submenu
self.file = tk.Menu(master=self.menubar)
self.about = tk.Menu(master=self.menubar)
# methods
self.submenu_cascades()
self.submenu_file()
self.submenu_about()
def clear(self):
""" removes the grids -> clear the screen """
self.license.grid_remove()
self.program_info.grid_remove()
def submenu_cascades(self):
""" cascades of the submenu """
self.menubar.add_cascade(label='Datei',
menu=self.file)
self.menubar.add_cascade(label='Über',
menu=self.about)
def submenu_file(self):
""" submenu of cascade file """
self.file.add_command(label='Beenden',
command=self.quit)
def submenu_about(self):
""" submenu of cascade about """
self.about.add_command(label='Lizenz',
command=self.submenu_about_license)
self.about.add_command(label='Programm',
command=self.submenu_about_program)
def submenu_about_license(self):
""" submenu_about -> 'Lizenz' """
self.clear()
self.license.grid()
self.license.gui()
def submenu_about_program(self):
"""submenu_about -> 'Programm' """
self.clear()
self.program_info.grid()
self.program_info.gui()