Я хочу создать текст на холсте:
myText = self.canvas.create_text(5, 5, anchor=NW, text = "TEST")
Как теперь узнать ширину и высоту myText?






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 является виджетом. Но myText - это не отдельный виджет, а идентификатор элемента на холсте (т.е. целое число, которое относится к элементу холста). Вы пытаетесь использовать метод .winfo_width() для этого целого числа => вы получаете AttributeError.
myText, по крайней мере, в данном примере - этоint. Указанные вами строки вызовут только повышение AttributeError.