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.
Steppi

Newbie: Tkinter Klassendefinition

Beitragvon Steppi » Mittwoch 10. August 2005, 13:54

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Newbie: Tkinter Klassendefinition

Beitragvon Leonidas » Mittwoch 10. August 2005, 14:03

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 Modvoice
BlackJack

Beitragvon BlackJack » Mittwoch 10. August 2005, 21:17

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.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Donnerstag 11. August 2005, 20:13

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++

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]