Seite 1 von 1

Newbie: Tkinter Klassendefinition

Verfasst: Mittwoch 10. August 2005, 13:54
von 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

Re: Newbie: Tkinter Klassendefinition

Verfasst: Mittwoch 10. August 2005, 14:03
von Leonidas
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).

Verfasst: Mittwoch 10. August 2005, 21:17
von 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.

Verfasst: Donnerstag 11. August 2005, 20:13
von Joghurt

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