Meine Absicht ist es, Gui aus mehreren Klassen zu erstellen und als Übung habe ich kleines Beispiel erstellt. Wie in der App zu sehen ist, sollte self.greet aus der Klasse Button erzeugt werden, aber was ich bekomme, ist generische Schaltfläche (ohne Text und Callback-Funktion). Irgendwelche Vorschläge?tkinter Klasse Zusammensetzung funktioniert nicht
import tkinter as tk
import tkinter.ttk as ttk
class Button(ttk.Button):
def __init__(self, parent):
super().__init__(parent)
self.item = ttk.Button(parent, text="Greet", command=self.greet)
def greet(self):
print("Greetings!")
class App():
def __init__(self, parent):
parent.title("A simple GUI")
self.label = ttk.Label(parent, text="A label")
self.greet = Button(parent)
self.button = ttk.Button(parent, text="Close", command=parent.quit)
self.label.grid(row=0, column=0, sticky=(tk.N, tk.S, tk.W, tk.E))
self.greet.grid(row=1, column=0, sticky=(tk.N, tk.S, tk.W, tk.E))
self.button.grid(row=2, column=0, sticky=(tk.N, tk.S, tk.W, tk.E))
parent.grid_columnconfigure(0, weight=1)
def greet(self):
print("Greetings!")
if __name__ == "__main__":
root = tk.Tk()
app = App(root)
root.mainloop()
Wenn Sie _composition_ verwenden, sollten Sie nicht von 'ttk.Button' vererben. Ihre Klasse erstellt tatsächlich zwei Schaltflächen. –
Nun, es ist wahr, dass ich über Konzepte lerne, damit ich sein kann und ich falsch liege. In Bezug auf Ihren Kommentar, wenn ich nicht von 'ttk.Button' wie 'Klasse Button() vererben:' Ich bekomme 'Builtins.TypeError: Objekt .__ Init __() nimmt keine Parameter'? – flebas