Wie würde ich mehrere Frames erstellen, die die gleichen Widgets in Tkinter haben? Grundsätzlich möchte ich 15 Kopien eines Satzes von multiple frames erstellen, die alle die gleichen Widgets wie im Bild gezeigt enthalten. Der Zweck dieses Programms ist es, dem Benutzer beim Sortieren von Fotos in Gruppen basierend auf einer spezifischen ID zu helfen Benutzer. Die Radioknöpfe sind dort für den Benutzer, jedes Foto, dh Front, Rückseite, Spitze usw. zu klassifizieren.Wie erstelle ich mehrere ähnliche Frames mit tkinter mit Klassen?
Sein nicht sehr leistungsfähiger, den Code 15mal zu kopieren und ich möchte wissen, ob es möglich ist, eine Klasse zu verwenden, um zu definieren den Rahmen einmal und den Code für jeden neuen Rahmen wiederverwenden. Ich muss verfolgen, was der Benutzer für jeden Frame macht und ihre Auswahl auf den Optionsfeldern und Kontrollkästchen für jeden Frame speichern. Nachdem alle Fotos vom Benutzer klassifiziert wurden, wird eine Schaltfläche angeklickt, die dann alle Fotos mit einer neuen ID speichern und die Informationen aus den Optionsfeldern in eine CSV-Datei speichern soll. Dann wird der nächste Stapel von Fotos geladen und der Vorgang wird wiederholt.
Ich habe ein Beispiel für den Code, den ich verwendet habe, um einen der Frames zu erstellen, das ist der Code, den ich wiederverwendbar machen möchte. Ich möchte es nicht 15 mal wiederholen müssen.
############################################################################
#FRAME 3
Photo_2 = Frame(master, bg = "white",relief = RIDGE, bd = 2)
Photo_2.grid(column = 2, row = 1, padx=5, pady=5)
Lbl2 = Label(Photo_2,text = 'Frame 3')
Lbl2.grid(row = 0, column = 0, columnspan = 4, pady = 5)
# Check box
varc2 = StringVar()
varc2.set(0)
Check_2 = Checkbutton(Photo_2, variable = varc2, text="Relevant?", command = lambda:Chk_Val(varc2))
Check_2.grid(row = 1,column = 0,columnspan = 4)
# Photo 1
P2 = "Photo_2.jpg"
P2 = Image.open(P2).resize((200, 200), Image.ANTIALIAS)
phot2 = ImageTk.PhotoImage(P2)
panel = Label(Photo_2, image = phot2)
panel.grid(columnspan = 3, column=1)
# Create Multiple Radio Buttons
Rad_Cont = Frame(Photo_2)
Rad_Cont.grid(column = 0, row = 2)
v2 = StringVar()
v2.set("Address")
for text,mode in RADIO:
b = Radiobutton(Rad_Cont, text=text, variable=v2,
value=mode, command = lambda:Rad_Val(v2))
b.pack()
################################################################################
Vielen Dank für die schnelle Antwort! Das hat definitiv geholfen. Ich habe es geschafft, eine PhotoFrame-Klasse zu erstellen, und ich rufe sie in einer anderen Hauptfensterklasse auf, in der ich jeden Frame konfiguriere. Diese Methode macht den Code viel lesbarer und modularer, nochmals vielen Dank. Das von Ihnen vorgeschlagene Lesematerial war ebenfalls sehr nützlich. –
Ich bin froh, dass ich helfen konnte! – flevinkelming