Position von GUI-Elementen festlegen

Fragen zu Tkinter.
Antworten
FSXTim
User
Beiträge: 6
Registriert: Donnerstag 13. Dezember 2012, 16:08

Hallo,

ich habe erst letzten Montag mit Python angefangen und habe nun eine kleine Frage:

wie kann ich die Position des Elements 'button1' genau festlegen? Bis jetzt weiß ich nur, wie man die Position von GUI-Elementen grob festlegt, wie z.B. mit 'side=LEFT'.

Code: Alles auswählen

button1 = Button(window, text="Click", command=window.destroy, width = 16)
button1.pack(side=LEFT)
VG
Zuletzt geändert von FSXTim am Freitag 14. Dezember 2012, 00:19, insgesamt 3-mal geändert.
BlackJack

@FSXTim: Warum willst Du das machen? Üblicherweise überlässt man die exakte Platzierung von GUI-Elementen einem Layout-Manager, damit die GUI auch überall und unter den verschiedensten Bedingungen *benutzbar* bleibt. Das fängt damit an, dass man in der Regel keine Fenstergrösse vorgibt, sondern das ebenfalls dem GUI-Toolkit überlässt das Fenster so gross zu machen, dass alles rein passt was man darstellen möchte. Nicht kleiner, aber eben auch nicht unnötig grösser.

Beim `pack()`-Layout-Manager sollte man innerhalb eines Container-Widgets die `side`-Werte nicht mischen, wenn man nicht genau weiss was man da tut. Das kann zu unerwarteten Ergebnissen führen oder in Extremfällen zu einer Endlosschleife des Layoutmanagers.
FSXTim
User
Beiträge: 6
Registriert: Donnerstag 13. Dezember 2012, 16:08

Hallo,

vielen Dank für deine Antwort. Ich kenne das von LUA, dass man den GUI-Elementen eine Position zuordnen kann. Dies finde ich einfach besser, da ich dann selber entscheiden kann, welcher Text, Button usw. an welcher Stelle platziert wird.

VG
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

FSXTim hat geschrieben:Ich kenne das von LUA, dass man den GUI-Elementen eine Position zuordnen kann. Dies finde ich einfach besser, da ich dann selber entscheiden kann, welcher Text, Button usw. an welcher Stelle platziert wird.
Das ist für den Entwickler zunächst auch einfacher. Allerdings hast du ein Problem, sobald du dein Programm auf einem anderen Rechner ausführst oder bei dir auch nur die Größe von Schriften oder Widgeteigenschaften änders. Dann entstehen große Lücken, Text wird über die Begrenzungen hinaus geschrieben oder Elemente sind in einader verschoben. Hinzu kommt dann noch, dass deine Anwendung nicht mit dem System skaliert. Da hat man einen extra großen Bildschirm und dann quetscht ein Programm alles auf ein kleines Fenster zusammen, welches sich beim Vergrößern nicht sinnvoll verhält.

Wenn du es also richtig machen willst, dann hast du gar keine Andere Wahl als die Verwendung eines Layout-Managers. Mit pixelgenauer Positionierung wirst du nicht glücklich. Zum einen, weil es auf allen anderen System grottig aussehen wird und zum anderen, weil der Wartungsaufwand riesig wird. Füge mal ein neues Element zwischen 20 andere ein oder verändere den Text. Dann musst du entweder alles per Hand anpacken (was sehr fehleranfällig ist) oder das dynamisch gestallten. Im letzten Fall kannst du es aber auch gleich mit einem Layoutmanger einfacher (und besser) haben.
Das Leben ist wie ein Tennisball.
FSXTim
User
Beiträge: 6
Registriert: Donnerstag 13. Dezember 2012, 16:08

Vielen Dank auch für deine Antwort!
Du hast mich überzeugt. Ich werde nun also mal an meinem ersten Python-Projekt weiterarbeiten.

Danke nochmal!

VG
Antworten