Danke für die schnellen Antworten.
Alfons Mittelmeyer hat geschrieben:@Schwarzer Wolf: ich weiß nicht, was Du mit Deinem Programm tun willst. Aber wenn Dein Bildschirm sich mit Frames füllt, dass Du nicht mehr damit zurechtkommst, könntest Du statt Frames vielleicht Toplevel Windows verwenden. Die kannst Du dann auch in den Vordergrund rücken und schließen kann man sie auch einfach per Mausklick.
Das macht leider keinen Sinn für dieses Programm. Mit Toplevel Windows meinst Du doch (ein) neu(e) Fenster erstellen, oder?
Es soll alles in einem Fenster laufen.
BlackJack hat geschrieben:@Schwarzer Wolf:
Erst einmal solltest Du klären ob Du tatsächlich selbst was programmieren möchtest was dann am Ende so ähnlich wie ein `ttk.Notebook` funktioniert. Man muss das Rad ja nicht neu erfinden.
Ansonsten würde ich die Frames mit den tatsächlichen Inhalten entweder austauschen, mit der entsprechenden `*forget()`-Methode, oder alle übereinander und expandierend in die gleiche Gridzelle stecken und dann das jeweils aktuelle in den Vordergrund holen. Also letztlich was `ttk.Notebook` auch machen wird. Dazu schreibt man sich dann am besten eine Klasse die so ähnlich wie `ttk.Notebook` oder beispielsweise `QStackedWidget` von Qt funktioniert.
Mit Qt kenne ich mich gar nicht aus bisher. Kannst Du mir ein Beispiel zeigen, wie ich so etwas in eine Gridzelle stecke und dann in den Vordergrund hole. Das habe ich hier im Forum schon irgendwo gelesen, aber es nicht verstanden. Im Theoretischen lernen bin ich nicht gerade der beste.
ttk.Notebook habe ich mir gerade angesehen. Ist sehr interessant. Kann ich da auch Submenüs anlegen? Ich weiß, nicht ob ich ohne Submenüs hinkomme mit dem Platz. Momentan hat sie nur eine Berechnung und eben etliche Dinge, die in der Menürubrik "Über" sind. Also Lizenz und ähnliches. Es sollen mit der Zeit noch etliche Funktionen hinzukommen (Joggen, tägliche Nahrung, Kraftstandards etc..
Ich poste mal einen Teil des "großen" Codes. Mir kommt das mit den Frames eben irgendwie sinnlos vor und es nimmt so viel Platz weg. Falls daraus nicht ersichtlich, poste ich den ganzen Code. Ist ja eh GPL 3
Also der große Code läuft wie gesagt bisher ohne Fehler. Aber ich habe eben den Fehler gemacht, alles in eine Klasse zu packen und will das nun auf mehrere Klassen unterteilen, sodass ich später Dinge schnell auswechseln kann, bzw. das Menü als Grundgerüst für andere Programme nehmen kann.
Die Klasse heißt erst neuerdings GUI, da ich ja aufteilen will. Dass sie nicht nur GUI enthält, sondern eben "alles" ist mir klar.
Code: Alles auswählen
class Gui(tkinter.Frame):
def __init__(self, master=None):
tkinter.Frame.__init__(self, master=master)
self.strength_table = []
self.menu_bar = tkinter.Menu(master=self.master)
self.submenu_programm = tkinter.Menu(master=self.menu_bar)
self.submenu_lifting = tkinter.Menu(master=self.menu_bar)
self.submenu_about = tkinter.Menu(master=self.menu_bar)
self.frame_programm = tkinter.Frame(master=self.master)
self.lframe_licence = tkinter.LabelFrame(master=self.master)
self.frame_one_rep_max = tkinter.Frame(master=self.master)
self.frame_developer = tkinter.Frame(master=self.master)
self.frame_propaganda = tkinter.Frame(master=self.master)
self.weight_input = tkinter.Entry(master=self.frame_one_rep_max,
width=5)
self.repetitions_input = tkinter.Entry(master=self.frame_one_rep_max,
width=5)
self.one_output = tkinter.Label(master=self.frame_one_rep_max)
self.five_output = tkinter.Label(master=self.frame_one_rep_max)
self.ten_output = tkinter.Label(master=self.frame_one_rep_max)
self.twelve_output = tkinter.Label(master=self.frame_one_rep_max)
self.fifteen_output = tkinter.Label(master=self.frame_one_rep_max)
self.logo = tkinter.PhotoImage(file='./grafics/schwarzerwolf_cc.gif')
self.tux = tkinter.PhotoImage(file='./grafics/tux.gif')
self.base_window()
self.menu()
self.base_program()
self.program_gui()
def base_window(self):
title, version, release, copyleft = schwarzerwolf()
self.master.attributes('-zoomed', True)
self.master.configure(menu=self.menu_bar)
self.master['bg'] = '#000000'
self.master['pady'] = 30
self.master.title('{title} [{version}]'.format(title=title,
version=version,
font='Monospace'))
def base_program(self):
self.frame_programm['bg'] = '#000000'
self.frame_programm.pack()
def base_one_rm(self):
self.frame_one_rep_max['bg'] = '#000000'
self.frame_one_rep_max.pack()
def base_licence(self):
self.lframe_licence['bg'] = '#000000'
self.lframe_licence['fg'] = '#ffffff'
self.lframe_licence['text'] = 'GPL Lizenz'
self.lframe_licence['pady'] = 30
self.lframe_licence['padx'] = 30
self.lframe_licence.pack()
def base_developer(self):
self.frame_developer['bg'] = '#000000'
self.frame_developer['pady'] = 30
self.frame_developer['padx'] = 30
self.frame_developer.pack()
def base_clear(self):
self.frame_programm.forget()
self.lframe_licence.forget()
self.frame_one_rep_max.forget()
self.frame_developer.forget()
self.frame_propaganda.forget()
def base_propaganda(self):
self.frame_propaganda['bg'] = '#000000'
self.frame_propaganda.pack()
def menu(self):
self.menu_bar['fg'] = '#ffffff'
self.menu_bar['bg'] = '#000000'
self.menu_bar['bd'] = 2
self.menu_bar['font'] = ('Monospace', 10)
self.menu_bar.add_cascade(label='Programm',
menu=self.submenu_programm)
self.menu_bar.add_cascade(label='Krafsport',
menu=self.submenu_lifting)
self.menu_bar.add_cascade(label='Über',
menu=self.submenu_about)
self.menu_program()
self.menu_lifting()
self.menu_about()
def menu_program(self):
self.submenu_programm.add_command(label='Beenden',
command=self.master.quit,
font=('Monospace', 10))
def menu_lifting(self):
self.submenu_lifting.add_command(label='1RM',
command=self.one_rep_max_gui,
font=('Monospace', 10))
def menu_about(self):
self.submenu_about.add_command(label='Lizenz',
command=self.gui_licence,
font=('Monospace', 10))
self.submenu_about.add_command(label='Programm',
command=self.program_gui,
font=('Monospace', 10))
self.submenu_about.add_command(label='Entwickler',
command=self.gui_developer,
font=('Monospace', 10))
self.submenu_about.add_command(label='Propaganda',
command=self.gui_propaganda,
font=('Monospace', 10))
Wer in der Wildnis lebt, muss zum Wolf werden, oder als Schaf sterben.
(Syrisches Sprichwort)