Newbie: Tkinter Klassendefinition

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Steppi

Hallo zusammen,

Als totaler Python-Newbie bin ich bei der Lektüre "Introducion to GUI Programming" auf eine Befehlszeile gestoßen, die mir so nicht ganz klar ist.

Code: Alles auswählen

 
class ClearApp:
     def __init__(self,parent=0):
            self.mainWindow = Frame(parent)
     ...
app = ClearApp()
app.mainWindow.mainloop()
Warum wird im Konstruktor das Attribute parent = 0 mitgegeben und das Frame Widget dann mit Attribute parent erzeugt (was ja dann 0 ist?) ? Warum wird parent überhaupt in __init__ verwendet wenn es beim Erzeugen von Instanz app nicht mit angegeben wird?

Danke im voraus
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Steppi hat geschrieben:Warum wird im Konstruktor das Attribute parent = 0 mitgegeben und das Frame Widget dann mit Attribute parent erzeugt (was ja dann 0 ist?) ? Warum wird parent überhaupt in __init__ verwendet wenn es beim Erzeugen von Instanz app nicht mit angegeben wird?
Frame wird mit Parent=0 aufgerufen, was wohl bedeuten soll dass es kein "Elternfenster" hat.

Du kannst die Klasse ClearApp ohne Angabe von parent nutzen, da bei __init__ ein Defaultwert gesetzt wird, auf 0. Aber du kannst es auch explizit angeben: ClearApp(parent=0) bzw ClearApp(0).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Und man kann `parent` natürlich auch auf ein "echtes" Widget setzen, wenn man `ClearApp` zum Beispiel in eine grössere Anwendung einbetten möchte.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Code: Alles auswählen

def foo(bar=0)
heisst, dass der Parameter bar weggelassen werden kann, und er in diesem Falle den Wert 0 zugewiesen bekommt. Das nennt man default Arguments und gibt es auch in C++
Antworten