Schreibweise root.label = Label()?

Fragen zu Tkinter.
Antworten
ShoxX
User
Beiträge: 24
Registriert: Sonntag 15. April 2012, 22:33

Hallo

Ich habe diese Frage schon beiläufig in einem anderen Thema geäußert aber sie ist da untergegangen darum habe ich sie dort gelöscht und stell sie hier neu.

Im Video2Brain schreibt der Autor die Instanzen von den Widgets Klassen,
also die Namen der Instanzen sehr komisch.

Code: Alles auswählen

from Tkinter import *

root = Tk()

root.label = Label(root, text="Hallo ShoXx")
root.label.pack()

root.mainloop()
Warum schreibt der das so und nicht einfach so:

Code: Alles auswählen

#Tkinter Fenster

from Tkinter import *

root = Tk()

label = Label(root, text="Hallo ShoXx")
label.pack()

root.mainloop()
Verstehe die Schreibweise root.label = Label() nicht warum nicht einfach label also wofür die Instanz root und den . Punkt und dann den Namen der Instanz welchen Sinn hat das :?

Edit:
Wir sagen doch beim erstellen der Instanz Label dem Konstruktor der Klasse Label dass das Label Window in das root Window kommen soll,
warum also beim Namen der Instanz noch mal der root.label Bezug ich komme nicht drauf.

Ich könnte jetzt einfach machen was der Autor sagt und so tun als wäre ja alles geklärt will es aber verstehen darum kann ich nicht weiter machen.

Edit2:
Ich wette um 100 Euro dass das Dünnschiss ist,
ich habe schon eine böse Ahnung das der Autor zwar versucht den prozeduralen Weg zu zeigen hat aber immer noch den selbst Bezug aus dem OOP mit self. im Hinterkopf,
und deshalb den Quatsch dahin schreibt, wenn das so ist will ich meine Kohle wieder,
denn im ganzen www schreibt kein einziges Tutorial diese Schreibweise.
BlackJack

@ShoxX: Das sieht nicht nur für Dich nach Unsinn aus, das ist es IMHO auch.

Es kann schon Sinn machen so eine gegenseitige Beziehung zu erstellen, zum Beispiel wenn man eine Klasse schreibt, die den Inhalt von einem Dialog repräsentiert und die von `Frame` ableitet, wird man diesen `Frame` natürlich als „master” oder „parent” an die daran enthaltenen Widgets übergeben. Andererseits wird man die Widgets auf die man später in anderen Methoden wieder zugreifen möchte als Attribute an das von `Frame` abgeleitete Exemplar binden.

Im gezeigten Beispiel könnte man das `Label` auch an einen lokalen, beziehungsweise hier modulglobalen, Namen binden. Dadurch hat man keinen Nachteil.
ShoxX
User
Beiträge: 24
Registriert: Sonntag 15. April 2012, 22:33

Danke BlackJack

Jetzt kann ich endlich weiter machen ohne dauernd im Hinterkopf zu haben ich habe etwas Grundlegend falsch verstanden,
denn als Anfänger kritisiert man sich als erstes bevor man den Autor in Frage stellt :wink:

Habe den Autor vom Python-Kurs eben eine Email geschrieben er soll seine Seite bitte schließen,
auch die hat mich verwirrt da sagt der doch die Widgets sind Methoden omfg,
habe im als Neuling erklärt das Widgets eigene Klassen sind was man ja auch an der Großschreibung sieht.

Habe jetzt ein sehr gutes Tutorial gefunden was ich zumindest als Neuling so merke:
http://home.foni.net/~heikos/tkinter/node2.html
Also bis jetzt macht das Tutorial einen sehr sehr sehr guten Eindruck der erklärt das ganze Hintergrund Wissen.
Antworten