2010-10-16 1 views
18

Я использую Python и Tkinter, и мне нужно знать текущие размеры (ширина, высота) виджета.Как узнать текущий размер виджета в tkinter?

Я пробовал somewidget["width"], но он возвращает только фиксированное значение и не обновляется при изменении размера виджета (например, при изменении размера окна).

+0

Вы уверены, что ваш виджет будет изменен? –

+0

Да, я вижу, что это изменение размера. –

ответ

32

Используйте somewidget.winfo_width() и somewidget.winfo_height(), чтобы получить фактический размер виджета, свойство somewidget['width'] - это лишь подсказка, предоставленная диспетчеру геометрии.

+0

Я думаю, вы имеете в виду «менеджер геометрии», а не «оконный менеджер». И спасибо! –

+0

В соответствии с [этим ответом] (https://stackoverflow.com/questions/28040943/in-tkinter-why-winfo-height-always-return-1) * actual * означает после вызова 'mainloop()'. Это, в свою очередь, означает, что если вы хотите отлаживать размеры виджетов, нужно поместить инструкции 'print' где-нибудь в цикле событий (обратные вызовы) или разместить информацию и прочитать ее на каком-нибудь виджете, таком как метка. Это логично, если вы подумаете об этом, но я полагаю, что старые процедурные привычки могут ударить независимо. –

0

somewidget.winfo_width() и somewidget.winfo_height() дать 1. Перед получением этих значений необходимо обновить Tk (выпуск tk.update()).