0

我创建了一个 Python GUI,允许用户创建和保存文本文件(技术上是日记)。在工作区(VS Code)中,我创建了一个简单的键/值对(技术上是字典)的 JSON 文件; "word": "definition".

我希望用户能够单击一个按钮,该按钮打开一个带有 tk.Text 小部件的窗口,该小部件包含清晰、可读和按字母顺序排列的 JSON 数据,但数据打印为由单引号分隔的多行字符串Text 小部件内没有任何空格或换行符。

我想要的结果是键/值对的“只读”列表,每行一个,没有所有 JSON 语法(双引号、逗号和大括号)。我找不到任何解决方案来实现这一特定偏好,而且我仍在学习 Python 程序中 JSON 数据的功能。如果有更合适或可配置的方法,我愿意接受建议,但我希望 Python 语法有一个简单的配置,它决定数据如何在 Text 小部件中打印。

感谢您提供的任何见解。我认为代码与解决此问题无关,但如果需要,我可以添加它。

4

1 回答 1

1

我将使用内置json模块,并使用dump加载的 json 文件的方法,或者dumps使用本示例中的字符串:

import json
print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))

导致

{
    "4": 5,
    "6": 7
}

https://docs.python.org/3/library/json.html

因此,您可以传递它json.dumps,然后将结果添加到您的文本小部件,而不是直接打印它:

import tkinter as tk
import json

app = tk.Tk()

text = tk.Text(app)

text.pack()

json_val = json.loads('{"a": 5, "b": 7}')

for k in json_val:
    text.insert(tk.END, '{} = {}\n'.format(k,json_val[k]))
text.config(state = tk.DISABLED)
app.mainloop()

上面的代码产生了这个:

在此处输入图像描述

于 2020-03-06T11:38:49.637 回答