Welchen Geometry Manager?

Fragen zu Tkinter.
Antworten
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

Hallo zusammen,

ich möchte gerne mit Tkinter eine GUI programmieren. Bevor ich anfange, muss ich mich aber wohl für einen Geometry Manager entscheiden. Nun gibt es IMO Grid, Pack & Place.
Welcher von diesen ist denn nun der beste? Ich nehme an, dass alle 3 ihre Vorzüge haben - aber gibt es einen kurzen und knappen Leitfaden, der beschreibt, was geht bzw. was geht nicht?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

api hat geschrieben: ich möchte gerne mit Tkinter eine GUI programmieren. Bevor ich anfange, muss ich mich aber wohl für einen Geometry Manager entscheiden. Nun gibt es IMO Grid, Pack & Place.
Welcher von diesen ist denn nun der beste? Ich nehme an, dass alle 3 ihre Vorzüge haben - aber gibt es einen kurzen und knappen Leitfaden, der beschreibt, was geht bzw. was geht nicht?
Place geht gar nicht! Vergiss, dass es place gibt.

Was grid und pack angeht, so dürfte das im wesentlichen Geschmackssache sein. Es gibt Dinge, die mit grid besser (d.h. klarer, stringenter) machbar sind, und andere, wo pack günstiger ist. Grundsätzlich lässt sich aber ein und dieselbe Sache in der Regel mit beiden realisieren.

Ich benutze praktisch nur noch den pack-Manager. Wenn man sich daran gewöhnt hat, in entsprechenden Strukturen zu denken und einen großen Teil der möglichen Optionen im Kopf hat, dann lässt sich damit relativ schnell und flüssig eine GUI aufbauen. Nach meiner Einschätzung wird der grid-Manager insgesamt weniger eingesetzt.
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

Hallo numerix,

das ist doch mal eine klare Aussage. Dann werd ich mich wohl mal mit pack beschäftigen. Danke dir schonmal.

Hast du eigentlich eine bevorzugte Doku-Seite, wo man sich am besten in das Thema einarbeitet? Gut wären auch Beispiel-Scripte, um sich mit der Struktur bekanntzumachen...
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Es gibt nicht *den* besten Geometrie Manager, sonder nur die Frage:
Ist fuer das Problem 'pack' oder 'grid' sinnvoller?

Man kann beide Manager auch indirekt mischen, indem man z.B. ein Frame mit 'pack' packt und innerhalb dieses Frames mit 'grid' arbeitet.
Auf alle Faelle solltest Du Dir *beide* Manager anschauen.

Beispiele?
Am besten hier die vielen Demos durcharbeiten.

:wink:
yipyip
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

api hat geschrieben:Hast du eigentlich eine bevorzugte Doku-Seite, wo man sich am besten in das Thema einarbeitet? Gut wären auch Beispiel-Scripte, um sich mit der Struktur bekanntzumachen...
http://www.ferg.org/thinking_in_tkinter ... grams.html
http://infohost.nmt.edu/tcc/help/pubs/tkinter/
http://effbot.org/tkinterbook/
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

Danke euch.

Ich werd mir mal die Links ansehen...
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

Ich bin auf diesen Strang gestoßen, und habe nur eine kleine Frage.
numerix hat geschrieben:
api hat geschrieben: ich möchte gerne mit Tkinter eine GUI programmieren. Bevor ich anfange, muss ich mich aber wohl für einen Geometry Manager entscheiden. Nun gibt es IMO Grid, Pack & Place.
Welcher von diesen ist denn nun der beste? Ich nehme an, dass alle 3 ihre Vorzüge haben - aber gibt es einen kurzen und knappen Leitfaden, der beschreibt, was geht bzw. was geht nicht?
Place geht gar nicht! Vergiss, dass es place gibt.
Was ist der Nachteil an place?

Es beinhaltet relx, rely, relheight und relwidth. Nach sowas sehne ich mich in Pascal.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Aries hat geschrieben:Was ist der Nachteil an place?
War ja klar, dass zu Halloween mindest ein Zombie aufersteht :mrgreen:

Wenn du eine GUI mit place entwirfst, dann wird es nur auf einem System vernünftig aussehen. Und zwar nur auf dem die GUI entwickelt wurde. Auf fast allen anderen Systemen werden sich Steuerelemente überlappen, Schriften ineinander laufen und Elemente unbenutzbar. Alternativ entstehen "hübsche" Lücken zwischen den Widgets. Und das nur, weil sich die Schriftgröße unterscheidet. Von verschiedenen Auflösungen, Schriftarten und Fenster-/Widgetstyles ganz zu schweigen.
Das Leben ist wie ein Tennisball.
BlackJack

Ergänzend zu EyDu's Ausführungen: Eine solche GUI die nicht supertrivial ist, macht auch viel zu viel arbeit wenn man etwas an der Oberfläche verändern möchte. Also zum Beispiel irgendwo ein Widget einfügen wozu man dann viele andere verschieben muss.
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

BlackJack hat geschrieben:Ergänzend zu EyDu's Ausführungen: Eine solche GUI die nicht supertrivial ist, macht auch viel zu viel arbeit wenn man etwas an der Oberfläche verändern möchte. Also zum Beispiel irgendwo ein Widget einfügen wozu man dann viele andere verschieben muss.
Das Problem scheint bei grid besser gelöst zu sein. Jedoch finde ich bei grid keine Möglichkeit, die Breite mehrerer Buttons zu vereinheitlichen und in Relation zur Fensterbreite zu setzen. Gibt es da eine Möglichkeit?
BlackJack

@Aries: Man kann auf dem enthaltenen Widget mit `columnconfigure()` das Gewicht bei der Breite der jeweiligen Spalte festlegen falls der Platz grösser ist als der Inhalt der Zellen in der Spalte benötigt. Die Breite wird dann einheitlich wenn mindestens so viel Platz zur Verfügung steht, dass das die breiteste Zelle in alle Spalten passen würde.
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

BlackJack hat geschrieben:@Aries: Man kann auf dem enthaltenen Widget mit `columnconfigure()` das Gewicht bei der Breite der jeweiligen Spalte festlegen falls der Platz grösser ist als der Inhalt der Zellen in der Spalte benötigt. Die Breite wird dann einheitlich wenn mindestens so viel Platz zur Verfügung steht, dass das die breiteste Zelle in alle Spalten passen würde.
Danke, erstmal. Ich blicke zwar noch nicht ganz durch, aber mit columnconfigure() und sticky kriege ich für den Moment ganz brauchbare Ergebnisse hin.
Antworten