tkinter.Entry() == tkiner.Entry(self)?

30/11/2009 - 20:25 von Markus Feilen | Report spam
Ich habe vor wenigen Wochen angefangen mich mit Python zu beschàftigen
und bin mittlerweile bei den grafischen Oberflàchen mittels tkinter
angelangt. Dabei wird unter anderem tkinter.Entry(self) verwendet. Aber
ich verstehe nicht ganz, warum noch einmal extra self mitgegeben wird.
in Entry() wird es als master-Parameter angewendet, oder?
Gibt es denn einen programmtechnischen Unterschied zwischen beiden
Varianten? Optisch sind beide auf den ersten Blick gleich.

Hier noch der komplette Quelltext des
Buchbeispiels:http://pastebin.ca/1694312
 

Lesen sie die antworten

#1 Diez B. Roggisch
01/12/2009 - 02:07 | Warnen spam
Markus Feilen schrieb:
Ich habe vor wenigen Wochen angefangen mich mit Python zu beschàftigen
und bin mittlerweile bei den grafischen Oberflàchen mittels tkinter
angelangt. Dabei wird unter anderem tkinter.Entry(self) verwendet. Aber
ich verstehe nicht ganz, warum noch einmal extra self mitgegeben wird.
in Entry() wird es als master-Parameter angewendet, oder?
Gibt es denn einen programmtechnischen Unterschied zwischen beiden
Varianten? Optisch sind beide auf den ersten Blick gleich.



Von welchen beiden Varianten redest du? Das einzige, was ich in deinem
Beispiel sehe ist


tkinter.Entry(self)


wobei self ein Frame ist. Und das ist auch die simple Erklaerung - es
gibt bei GUIs ueblicherweise immer einen Baum von Objekten. Top-level
sind irgendwelche Fenster, und das dividiviert sich dann runter bis zu
einzelten Controls oder Texten.

Und tkinter.Entry(self) erzeugt ein Entry-Objekt als Kind des Frames.

Es mag Objekte geben, die mal mit, mal ohne Vater sein koennen. Da kann
man dann

Foo()

oder

Foo(der_vater)


schreiben.

Oder verwechselst du das ganze hiermit?


class Bar(object):


def __init__(self):
pass



bar = Bar()


In Python hat jede Methode einen expliziten ersten Parameter, der via
Konvention "self" genannt wird (geht aber auch beliebiges anderes), und
der dann aber implizit beim Aufruf mitgegeben wird - sie die letzte Zeile.

Diez

Ähnliche fragen