Как сделать вывод словаря в 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()

