Einfache Symbole in Python printen

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.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Richtig "offiziell" vielleicht nicht, aber es wird mir überall empfohlen. Danke jedenfalls für die Vergleiche mit anderen GUIs (sehen wirklich in etwa gleich aus). Der Autor versucht offenbar das Konzept etwas systematischer [eigene .createWidgets()-Methode] zu vermitteln. Warum muss man das Frame im __init__ Initialisieren? Wieso kann man das nicht wie beim Beispiel, wie das .grid() erstellen?
BlackJack

@meego: Die letzten beiden Fragen verstehe ich nicht? Warum man etwas in der `__init__()` initialisiert sollte aus dem Namen der Methode eigentlich offensichtlich sein — das ist die Methode die das Objekt *init*ialisiert. Und das mit dem `grid()` verstehe ich nicht? Das Objekt selbst sollte das halt nicht mit *sich selbst* machen weil man dann das Objekt nicht mehr anders benutzen kann, also weder mit `pack()` noch mit `grid()` aber zum Beispiel an eine andere Position anordnen kann. Ein Widget darf alles mögliche mit den Wigdets machen die es selbst beinhaltet, die ”gehören” ihm, aber bei im Objektbaum übergeordneten Widgets hat es nichts zu verändern weil es nicht weiss oder wissen sollte was das für welche sind. Andernfalls schränkt ein Widget unnötig die Möglichkeiten ein was man damit machen kann. Wie gesagt: keines der von Tk zur Verfügung gestellten Widgets macht so etwas, sonst wären die ziemlich nutzlos.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Ist der Syntax um ein Objekt zu initialisieren nicht einfach:

Code: Alles auswählen

my_x = Class()
?

"Das Objekt selbst sollte das halt nicht mit *sich selbst* machen weil man dann das Objekt nicht mehr anders benutzen kann, also weder mit `pack()` noch mit `grid()` aber zum Beispiel an eine andere Position anordnen kann" verstehe ich nicht.
BlackJack

@meego: Damit ruft man die `__init__()` letztendlich auf. Und in der sollte in der Regel alles stehen was nötig ist um das Objekt zu initialisieren.

Das Beispielprogramm aus der Referenz von der New Mexico Tech hat eine Klasse die von `Frame` abgeleitet ist und deren Exemplare *sich selbst* per `grid()` layoutet. Das sollte sie aus genannten Gründen nicht. Auch sollte sie nicht von sich aus ihr *irgendwo* weiter oben angeordnetes Toplevel-Widget ermitteln und dessen Grid-Layout mit `gridconfigure()` verändern, denn damit das den gewünschten Effekt hat muss das Toplevel das direkte Elternwidget sein *und* es wird auch noch eine Annahme darüber gemacht wo das `Frame`-Objekt in diesem Grid platziert ist, was es nicht wissen sollte, denn dann *muss* es ja auch dort platziert sein, und man kann das nicht auf einer höheren Ebene ändern ohne Code in einer tieferen Ebene ebenfalls anpassen zu müssen.
Antworten