Как узнать размер элемента холста в Python / Tkinter?

Я хочу создать текст на холсте:

myText = self.canvas.create_text(5, 5, anchor=NW, text = "TEST")

Как теперь узнать ширину и высоту myText?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
7
0
8 341
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

bounds = self.canvas.bbox(myText)  # returns a tuple like (x1, y1, x2, y2)
width = bounds[2] - bounds[0]
height = bounds[3] - bounds[1]

См. Ссылка на TkInter.

Этот метод, казалось, работает хорошо, если все, что вас интересует, - это ширина и высота рассматриваемого холста, используя границы поля, а затем проверка дифференциала работает так же хорошо, если вы хотите сделать это таким образом.

width = myText.winfo_width()  
height = myText.winfo_height()

myText, по крайней мере, в данном примере - это int. Указанные вами строки вызовут только повышение AttributeError.

Adrian Castravete 17.10.2016 14:14

Интересно, почему за это так много голосов, ведь приведенный выше комментарий верен: я просто получаю ошибки атрибутов.

Bram Vanroy 25.05.2020 18:16

Это работает, если myText является виджетом. Но myText - это не отдельный виджет, а идентификатор элемента на холсте (т.е. целое число, которое относится к элементу холста). Вы пытаетесь использовать метод .winfo_width() для этого целого числа => вы получаете AttributeError.

Demian Wolf 20.12.2020 02:04

Другие вопросы по теме