Tkinter und Objekte: Einstieg

Fragen zu Tkinter.
Antworten
BastiL
User
Beiträge: 135
Registriert: Montag 7. Juli 2008, 20:22

Hallo zusammen,

ich habe mal den Einstieg in Tkinter und damit auch in die Objektorientierung gewagt. Jetzt habe ich doch ein paar Fragen wie man so etwas am geschicktesten angeht. Ich sehe mehrere Möglichkeiten:

- Eine Klasse "GUI" die alle Methoden enthält, um Objekte zu erzeugen (Checkboxen, Buttons, Frames,...). Das habe ich so versucht, aber mir ist nicht klar, wie ich dann "von aussen" die Methoden der Klasse ansprechen kann, um z.B. einen Button auf einer Instanz der Klasse GUI zu erzeugen. Schließlich sollen verschiedene Fenster unterschiedlich aussehen und deshalb will ich das nicht im jeweiligen Konstruktor tun.
- Für jedes Objekt (Fenster, Frame, Buton,...) eine eigene Klasse definieren und dann nach Bedarf Instanzen der einzelnen Klassen "zusammenbauen"
- Vielleicht geht das irgendwie viel geschickter - ich bin mit der Objektorientierung schließlich erst am Anfang?

Danke Basti
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BastiL hat geschrieben:- Für jedes Objekt (Fenster, Frame, Buton,...) eine eigene Klasse definieren und dann nach Bedarf Instanzen der einzelnen Klassen "zusammenbauen*
Die Widgets sind doch bereits Klassen, warum willst du sie denn nochmal in Klassen verpacken?

Generell gehe ich so vor (in PyGTK), dass ich eine Klasse habe die das Fenster representiert, dort einige Widgets als Attribute gebunden habe und einige Callbacks die auf die Instanz der Klasse zeigen. Alles überhaupt kein problem. Ich würde dir raten dir einfach schon vorhandenen Code anzusehen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BastiL
User
Beiträge: 135
Registriert: Montag 7. Juli 2008, 20:22

Leonidas hat geschrieben: Generell gehe ich so vor (in PyGTK), dass ich eine Klasse habe die das Fenster representiert, dort einige Widgets als Attribute gebunden habe und einige Callbacks die auf die Instanz der Klasse zeigen. Alles überhaupt kein problem. Ich würde dir raten dir einfach schon vorhandenen Code anzusehen.
Jetzt stecke ich noch nicht so tief in der Objektorientierung drin aber so wie ich dich verstehe bindet du die Widgets als Attribute im Konstruktor der Fensterklasse? Das bedeutet das jedes Fenster diese Elemente auf jeden Fall hat, oder? Man muss dann für Fenster mit anderen Elementen neue Klassen erzeugen, oder?
Vorhandener Code macht das im wesentlich auch so... Was du mit den Callbacks meinst verstehe ich nicht.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Callbacks sind Funktionen die bei bestimmten Events aufgerufen werden, etwa wenn jemand auf einen Button klickt.

Da es dir nur um die Konzepte geht, kannst du dir ja mal seewhatsonair.py ansehen. Für neue Fenster kann man entweder ableiten oder neue Klassen erstellen, ja. Aber das scheint mir nie ein Problem gewesen zu sein, da die Dialoge in der Regel ausreichend verschieden sind, als dass sie mit einer einzigen Klasse bequem verarbeitet werden könnten, also braucht man sowieso mehrere.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten