2010-10-16 172 views
18

Estoy usando Python y Tkinter, y necesito conocer las dimensiones actuales (ancho, alto) de un widget.¿Cómo averiguar el tamaño del widget actual en tkinter?

He intentado con somewidget["width"], pero devuelve solo un valor fijo, y no se actualiza cada vez que cambia el tamaño del widget (por ejemplo, cuando la ventana cambia de tamaño).

+0

¿Estás seguro de que tu widget está siendo redimensionado? –

+0

Sí, puedo ver el cambio de tamaño. –

Respuesta

32

Use somewidget.winfo_width() y somewidget.winfo_height() para obtener el tamaño del widget real, la propiedad somewidget['width'] es solo una pista que se le da al gerente de geometría.

+0

Creo que te refieres a "gerente de geometría", en lugar de "administrador de ventanas". ¡Y gracias! –

+0

Según [esta respuesta] (https://stackoverflow.com/questions/28040943/in-tkinter-why-winfo-height-always-return-1) * real * significa después de la llamada 'mainloop()'. Lo que a su vez significa que si uno quiere depurar tamaños de widgets, uno tiene que colocar declaraciones 'print' en algún lugar del bucle de eventos (callbacks) o colocar la información y leerla en algún widget como la etiqueta. Eso es lógico si lo piensas, pero creo que los viejos hábitos de procedimiento pueden surgir independientemente. –

0

somewidget.winfo_width() y somewidget.winfo_height() dan 1. Necesita actualizar Tk (número tk.update()) antes de obtener estos valores.

Cuestiones relacionadas