Ich möchte ein Rasterlayout erstellen, mit einem Raster, das die erste Zeile füllt, bis kein Platz mehr im Fenster ist, und Elemente dynamisch in die darunter liegende Zeile verschieben (z. B. Zeilenumbruch) . Wenn die Fensterbreite angepasst wird, passt sich das Raster an. Die Größenänderung der Boxen ist nicht erwünscht. Ich beabsichtige, die Größe jeder kleinen Box beizubehalten, aber zu ändern, wo das Layout jede Box platziert.Tkinter Grid Dynamisches Layout
Ich stelle mir vor, dass diese Funktionalität möglich ist, indem man die Breite des Rahmens misst, und wenn die (Anzahl der Kästchen) * (Breite jedes Kästchens) die Breite überschreitet, gehe zur nächsten Reihe. Ich habe mich nur gefragt, ob es einen besseren Weg gibt, den ich nicht verstehe.
Wenn das obige die einzige Option ist, was ist der beste Weg, um das zu aktualisieren? Muss ich ein Event auf Fenstergröße oder etwas einstellen? Es scheint, als müsste ich einen Layout-Manager nicht mehr nachbearbeiten, so fühlt sich das an. Ich möchte nur prüfen, ob eine ähnliche Funktionalität bereits eingebaut ist. Grid scheint ein leistungsfähiger Layout-Manager zu sein, aber ich konnte diese Option nicht finden.
Die folgenden Bilder beschreiben das Verhalten, das ich mit dem gleichen Satz von 6 Boxen auf einem einzigen Rahmen mit Raster-Layout verwenden möchte.
Fenster ist breit genug, um alle 6 Boxen zu halten, so dass sie alle in Zeile 1 passen. Sie passen sich dann als Fenstergröße an.
Das ist keine Option in tkinter. Sie müssten genau das tun, was Sie erwähnt haben: Überwachen Sie die Fenstergröße und ändern Sie sie nach Bedarf neu. Es würde nicht sehr viel Code erfordern. – Novel
Und wie sollte ich die Fenstergröße für eine Änderung überwachen? Ist es negativ, dies zu tun? Wenn es nicht empfohlen wird (da es nicht eingebaut ist), könnte ich eine andere Lösung finden, aber wenn es ziemlich Standard ist, so etwas zu tun, kann ich es sicher herausfinden – Tarm
Verwenden Sie das Ereignis "". –
Novel