2010-10-16 10 views
18

Ich verwende Python und Tkinter, und ich muss die aktuellen Dimensionen (Breite, Höhe) eines Widgets kennen.Wie finde ich die aktuelle Widgetgröße in tkinter heraus?

Ich habe versucht somewidget["width"], aber es gibt nur einen festen Wert zurück und wird nicht aktualisiert, wenn sich die Widgetgröße ändert (z. B. wenn das Fenster in der Größe geändert wird).

+0

Sind Sie sicher, dass Ihr Widget in der Größe geändert wird? –

+0

Ja, ich kann sehen, wie es die Größe ändert. –

Antwort

32

Verwenden Sie somewidget.winfo_width() und somewidget.winfo_height(), um die tatsächliche Widgetgröße zu erhalten, die somewidget['width']-Eigenschaft ist nur ein Hinweis an den Geometrie-Manager.

+0

Ich denke du meinst "Geometry Manager", anstatt "Window Manager". Und danke! –

+0

Gemäß [dieser Antwort] (https://stackoverflow.com/questions/28040943/in-tkinter-why-winfo-height-always-return-1) * actual * bedeutet nach dem Aufruf von 'helploop()'. Das bedeutet wiederum, dass man, wenn man Widget-Größen debuggen will, "print" -Anweisungen irgendwo in der Ereignisschleife (Callbacks) platzieren muss oder die Informationen auf ein Widget wie label schreiben muss. Das ist logisch, wenn Sie darüber nachdenken, aber ich denke, dass alte Verfahrensgewohnheiten unabhängig davon auftreten können. –

0

somewidget.winfo_width() und somewidget.winfo_height() geben 1. Sie müssen Tk aktualisieren (Ausgabe tk.update()), bevor Sie diese Werte erhalten.

Verwandte Themen