Wahre Widgetabmessungen zurücklesen

Fragen zu Tkinter.
Benutzeravatar
wuf
User
Beiträge: 1360
Registriert: Sonntag 8. Juni 2003, 09:50

Wahre Widgetabmessungen zurücklesen

Beitragvon wuf » Mittwoch 21. Januar 2004, 10:18

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:
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Re: Wahre Widgetabmessungen zurücklesen

Beitragvon Voges » Mittwoch 21. Januar 2004, 12:03

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
Benutzeravatar
wuf
User
Beiträge: 1360
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Donnerstag 22. Januar 2004, 00:47

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:
Take it easy Mates!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder