2010-10-16 11 views
18

Sto usando Python e Tkinter e ho bisogno di conoscere le dimensioni correnti (larghezza, altezza) di un widget.Come scoprire la dimensione del widget corrente in tkinter?

Ho provato somewidget["width"], ma restituisce solo un valore fisso e non viene aggiornato ogni volta che la dimensione del widget cambia (ad es. Quando la finestra viene ridimensionata).

+0

sei sicuro che il tuo widget viene ridimensionato? –

+0

Sì, lo vedo ridimensionare. –

risposta

32

Utilizzare somewidget.winfo_width() e somewidget.winfo_height() per ottenere la dimensione effettiva del widget, la proprietà somewidget['width'] è solo un suggerimento dato al gestore della geometria.

+0

Penso che intendiate "gestore geometria", invece di "gestore finestre". E grazie! –

+0

Secondo [questa risposta] (https://stackoverflow.com/questions/28040943/in-tkinter-why-winfo-height-always-return-1) * actual * significa dopo la chiamata 'mainloop()'. Il che a sua volta significa che se si desidera eseguire il debug delle dimensioni dei widget, è necessario posizionare le istruzioni 'print' da qualche parte nel loop degli eventi (callbacks) o posizionare le informazioni e leggerle su qualche widget come etichetta. È logico pensarci, ma immagino che le vecchie abitudini procedurali possano dare il calcio a prescindere. –

0

somewidget.winfo_width() e somewidget.winfo_height() dare 1. È necessario aggiornare Tk (numero tk.update()) prima di ottenere questi valori.

Problemi correlati