Ich möchte eine Register-Klasse bauen. Jetzt stellt sich die Frage, weshalb ich nicht mit der ttk.Notebook arbeite. Mir gefällt, dass ich die Radiobuttons flexibel in die GUI einbinden kann. Ich möchte wirklich nur ungern darauf verzichten .
Nun zu meinem Problem.
Anhand meines register_titel, wird die Anzahl der der Registerbuttons und Registerframes (labels) definiert. Ich nehme an, dass ich die Registerframes an die For-Schleife der Radiobuttons anhängen kann. Nur ob ich die Frames mit den Button über eine If abfrage oder StringVar steuern muss, und wie das aussehen könnte, verstehe ich nicht. :K
Ich wäre dankbar, wenn mir hier jemand weiterhelfen könnte.
Code: Alles auswählen
import tkinter as tk
class Register(tk.Frame):
def __init__(self, master=None,register_titel=['']):
tk.Frame.__init__(self, master)
self.pack()
self.hauptregister = tk.Frame(self)
self.hauptregister.pack()
self.register_titel = register_titel
self.var = tk.StringVar()
self.var.set ('Montag')
for a in self.register_titel:
rb = tk.Radiobutton(self.hauptregister,
indicatoron=0,
text=a,
value=a,
variable=self.var,
width=15,
command=self.frame_wechsel)
rb.pack(side=tk.LEFT)
# -------------------------------------------------------------------------------------------------------------------
self.haupt_frame = tk.Frame(self)
self.haupt_frame.pack(expand=True, fill='both', pady=5)
self.montag_frame = tk.Label(self.haupt_frame,bg='Green')
self.montag_frame.pack(expand=True, fill='both')
self.dienstag_frame = tk.Label(self.haupt_frame,bg='Red')
self.mittwoch_frame = tk.Label(self.haupt_frame,bg='Blue')
def frame_wechsel(self):
self.montag_frame.forget()
self.dienstag_frame.forget()
self.mittwoch_frame.forget()
if self.var.get() == 'Montag':
self.montag_frame.pack(expand=True, fill='both')
elif self.var.get() == 'Dienstag':
self.dienstag_frame.pack(expand=True, fill='both')
else:
self.mittwoch_frame.pack(expand=True, fill='both')
#------------------------------------------------------------------------------------------------------------------
class Hauptprogramm(tk.Frame):
def __init__(self,master=None):
tk.Frame.__init__(self,master)
self.pack()
self.hauptregister = Register(master,['Montag','Dienstag','Mittwoch'])
self.hauptregister.pack(expand=True, fill='both')
self.dienstag = self.hauptregister.dienstag_frame
self.dinstagregister = Register(self.dienstag, ['Montag', 'Dienstag'])
self.dinstagregister.pack(expand=True, fill='both')
if __name__ == '__main__':
root = tk.Tk()
Hauptprogramm(master=root)
root.mainloop()