Seite 1 von 1

Wahre Widgetabmessungen zurücklesen

Verfasst: Mittwoch 21. Januar 2004, 10:18
von wuf
Hallo Python Freunde!

Ich habe wieder einmal ein Frage. Wie kann
ich die wahren Werte für 'height' und 'width'
eines Tkinter-Canvas-Widgets, welches sich
dynamisch einem Fenster anpasst zurücklesen.
Also bei diesem Canvas-Widget sind die Optionen
für die pack Methode wie folgt gesetzt:
fill = BOTH
expand = TRUE
Für die Erzeugung des Widgets werden keine
Werte für die Optionen 'height' und 'width'
vorgegeben!

Folgende Tests mit der print-Anweisung für die
Abmessungen der Canvas ergeben nur unwahre Werte:

print canvas['height']
print canvas['width']
print canvas.cget('height')
print canvas.cget('width')

Wird das Widget mit festen Werten für die
Optionen 'width' und 'height' erzeugt, und
für dessen pack-Methode keine Optionen ge-
setzt, werden die wahren Werte zurückgegeben.

Gibt es eine Lösung für das erwähnte Problem?

Gruss wuf :idea:

Re: Wahre Widgetabmessungen zurücklesen

Verfasst: Mittwoch 21. Januar 2004, 12:03
von Voges
Hallo!
Die Optionen 'height' und 'width' enthalten nur 'Wunschwerte' für den Programmstart und verändern sich nicht durch Größenänderung zur Laufzeit. Ich vermute mal, dass Du mit winfo_height()/-_width() eher zum Ziel kommst.
Jan

Verfasst: Donnerstag 22. Januar 2004, 00:47
von wuf
Hallo Voges

Dein Tipp war ein Volltreffer. Heureka es
funktioniert!! Ich habe gewusst, dass es die
Methoden wie winfo_width() und winfo_height()
gibt, aber ich dachte diese können nur auf
das Tk-Hauptfenster bzw. ein Toplevelfenster
angewendet werden und nich auf Widgets. Bei
meiner Anwendung brauche ich die aktuellen
Abmessungen einer Canvasfläche um Grafische-
Objekte die sich auf diese Fläche befinden,
nach einer dynamischen Änderung neu zu platz-
ieren.

In diesem Zusammenhang habe ich noch folgende
Frage:

Ist der Canvas-Event
canvas.bind("<Conigure>" , meine Funktion)
der richtige um die Funktion für die Neuplatz-
ierung der Objekt auf der Canvasfläche aufzurufen?

Vielen Dank für deine motivierende Antwort Voges!
Gruss wuf
:lol: