Перенос строки Label tkinter
from tkinter import *
root = Tk()
root.geometry('600x400')
label = Label(root, text='аааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа',
font='Georgia') #74
label.grid(row=0, column=0)
В переменной label хранится 74 "а", это предел (учитывая шрифт и разрешение 600x400), дальше символы уходят за экран. Так вот, помогите мне сделать так, чтобы символы не уходили за экран, а переносились на другую строку.
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Как вариант можно получить фактическую ширину текста, посчитать примерную ширину символа, посчитать сколько символов поместится в нужной ширине окна, потом с помощью функции wrap из модуля textwrap разбить на строки и вывести текст в label еще раз:
from tkinter import *
from textwrap import wrap
root = Tk()
root.geometry('600x400')
text = 'a'*74
label = Label(root, text=text, font='Georgia')
label.grid(row=0, column=0)
# Принудительно обновляем интерфейс,
# чтобы появилось окно и можно было получить фактическую ширину текста:
root.update()
width = label.winfo_width()
if width > 600:
char_width = width / len(text)
wrapped_text = '\n'.join(wrap(text, int(600 / char_width)))
label['text'] = wrapped_text
root.mainloop()
Функция wrap также корректно делает перенос по словам:

