Tkinter вставляет данные JSON внутри текста - PullRequest
0 голосов
/ 27 мая 2019

У меня есть JSON-файл с именами, адресом электронной почты, фамилией и т. Д. Я пытаюсь поместить данные в текстовое поле в tkinter.

Я пытался использовать метку так:

with open('file.json','r') as inside:
    data = json.load(inside)

Label(Interface, text=data).place(x=100,y=100)

Что произошло сейчас, так это то, что была только 1 строка со всей информацией, и она не была читаемой, поэтому я решил перейти к текстовому полю

Text(Interface, state='normal',height = 20, width = 60).place(x=10,y=350)
Text.insert(INSERT,data)

Теперь получаю ошибку:

TypeError: insert() missing 1 required positional argument: 'chars'

Я читал, что требуется только 2 аргумента, но я пытался с 3:

Text.insert(INSERT,data,"test")

Я получаю ошибку:

AttributeError: 'str' object has no attribute 'tk'

Я не знаю, что я делаю неправильно в этом случае ..

Ответы [ 2 ]

1 голос
/ 28 мая 2019

проблема в этой строке кода:

Text.insert(INSERT,data,"test")

Вы вызываете метод класса, который ожидает три аргумента: экземпляр, индекс и данные, которые нужно ввести.

Вместо этого вам нужно вызывать insert в экземпляре :

text = Text(Interface, state='normal',height = 20, width = 60)
text.place(x=10,y=350)
...
text.insert(INSERT, data)

Примечание: обязательно, чтобы вы сохранили ссылку на текстовый виджет, и чтобы вы сделали не вызов place (или pack или grid) в одной строке (например: текст (...). Место (...) `.

1 голос
/ 27 мая 2019

Я не могу воспроизвести проблему, о которой вы говорите. Следующий работающий пример работает с отображением данных JSON в файле:

import json
from tkinter import *


json_filename = 'inside.json'

Interface = Tk()

with open(json_filename, 'r') as inside:
    data = json.load(inside)

text = Text(Interface, state='normal', height=20, width=60)
text.place(x=10, y=50)
text.insert('1.0', str(data))

Interface.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...