Как сделать вывод словаря в Tkinter

Появилась проблема с выводом словаря в GUI (tkinter) Пытался сделать вывод через Label, но не могу сделать перенос строки, текст уходит за рамки лейбла. Вот код:

from tkinter import *


def adding_student():
    dict = {1: [',блaблашкин', '15', 'вкб13'], 2: ['блоблошкин', '2', 'вкб1121314'], 3: ['блублушкин', '3', 'вкб12'],
            4: ['блоблошкин', '2', 'вк211']}
    num = text.get()
    info = text1.get()
    dict[num] = info.split(' ')
    ouptput.configure(text = dict )
    print(dict)

root = Tk()
root.title('my')
root.geometry('200x150+300+225')
btn = Button(text = 'myButton',
                     command = adding_student)
btn.grid(column =2,
                 row=2)
text = Entry(background = 'black')
text.grid(column= 1,
               row = 1)
text1 = Entry(background = 'black')
text1.grid(column = 1,row= 2)
ouptput = Label(root,
                            width = 40,
                            height = 40)
ouptput.grid(column = 1,
         row = 4)
root.mainloop()

Ответы (1 шт):

Автор решения: insolor

Для вывода текста с переносами лучше использовать многострочное текстовое поле Text. Пример:

from tkinter import *

root = Tk()

# wrap=WORD значит переносить текст по словам (по умолчанию переносит по символам)
text = Text(root, wrap=WORD)  
text.pack()

d = {1: [',блaблашкин', '15', 'вкб13'], 2: ['блоблошкин', '2', 'вкб1121314'], 3: ['блублушкин', '3', 'вкб12'],
     4: ['блоблошкин', '2', 'вк211']}

text.insert(1.0, d)

root.mainloop()

Результат: Скриншот

Для более "красивого" вывода можно использовать функцию pformat из модуля pprint (pprint - сокращение от pretty print, буквально "красивая печать"):

from tkinter import *
from pprint import pformat

root = Tk()

text = Text(root, wrap=WORD)
text.pack()

d = {1: [',блaблашкин', '15', 'вкб13'], 2: ['блоблошкин', '2', 'вкб1121314'], 3: ['блублушкин', '3', 'вкб12'],
     4: ['блоблошкин', '2', 'вк211']}

# pformat "красиво" разобьёт текст на отдельные строки с отступами
text.insert(1.0, pformat(d, width=text['width']))
# Параметр width=text['width'] функции pformat означает,
# что текст будет разбит на отдельные строки,
# так что на каждой строке будет не больше символов,
# чем ширина текстового поля в символах

root.mainloop()

Результат: Скриншот

→ Ссылка