Eigene Register-Klasse

Fragen zu Tkinter.
Antworten
anbey7
User
Beiträge: 3
Registriert: Donnerstag 12. Oktober 2017, 10:45

Hallo zusammen, ich bin neu hier und Anfänger.

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 :wink: .

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()
Antworten