Как получить текущую ширину метки в tkinter? - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть метка в тексте, и я хочу получить текущую ширину метки

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()

label = tk.Label(root, text="hello world!")
label.pack()

print("label width: ", label.winfo_width())

root.mainloop()

Вот исполняемый пример моей проблемы, метод .winfo_width() всегда возвращает 1. Имеет ли tkinter метод для получения реальной ширины метки или мне нужно его построить?

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

Правильный способ получить ширину одного виджета - метод winfo_width.Он вернет ширину любого виджета.

Однако важно знать о winfo_width то, что он возвращает фактическую ширину визуализированного виджета.Если он не был обработан - либо вы не поместили его в окно, либо окно не имело возможности нарисовать - оно вернет ширину в 1 пиксель.

В вашемВ случае, если вы можете позвонить update, прежде чем получить ширину.Это приведет к отображению окна на дисплее, в результате чего будет получено правильное значение от winfo_width.

root.update()
print("label width: ", label.winfo_width())
0 голосов
/ 13 апреля 2019
    root.geometry("800x600")

http://effbot.org/tkinterbook/widget.htm#Tkinter.Widget.winfo_width-method Цитируя ссылку, в которой говорится: winfo_width () [#]

Получите ширину этого виджета в пикселях. Обратите внимание, что если окно не управляется диспетчером геометрии, этот метод возвращает 1. Чтобы получить реальное значение, вам, возможно, придется сначала вызвать update_idletasks. Вы также можете использовать winfo_reqwidth, чтобы получить запрошенную ширину виджета (то есть «естественный» размер, определенный самим виджетом на основе его содержимого).

Возвращает: текущая ширина виджета в пикселях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...