【发布时间】:2018-08-21 13:34:38
【问题描述】:
感谢您的宝贵时间。我简化了这个问题的结构,使其尽可能简单地解决。我正在与 GUI 开发人员 tkinter 一起使用 python。我想从 tkinter 中的条目小部件捕获文本输入并将其打印/写入 json 文件。到目前为止,我所拥有的是这个示例,它从条目小部件中捕获文本并在 shell 终端中打印文本。
from tkinter import *
def show_entry_fields():
print("First Name: %s\nLast Name: %s" % (e1.get(), e2.get()))
e1.delete(0,END)
e2.delete(0,END)
master = Tk()
Label(master, text="First Name").grid(row=0)
Label(master, text="Last Name").grid(row=1)
e1 = Entry(master)
e2 = Entry(master)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
Button(master, text='Show', command=show_entry_fields).grid(row=3, column=1, sticky=W, pady=4)
mainloop( )
这段代码正是我想做的,除了文本打印在 shell 终端而不是单独的 json 文件中。 要将文本打印到 json 文件中,我尝试了替代方法函数方法如:
def show_entry_fields():
f = open('name.json', 'a', encoding = 'utf8')
print("First Name: %s\nLast Name: %s" % (e1.get(), e2.get()))
e1.delete(0,END)
e2.delete(0,END)
在这里,我希望该函数能够打开 json 文件 'name.json' 并打印该文件中的文本,就像第一个示例在 shell 终端中打印文本一样。这不成功。
还有:
def show_entry_fields():
f = open('name.json', 'a', encoding = 'utf8')
f.write("First Name: %s\nLast Name: %s" % (e1.get(), e2.get()))
e1.delete(0,END)
e2.delete(0,END)
在这里,我希望能实现同样的目标,但还是没有成功。
最终,目标是打印输入到“name.json”文件中的条目小部件中的文本。虽然我已经能够从终端外壳中的条目小部件打印文本(参见第一个示例),但我无法找到打开 json 文件并打印该文件中的文本的函数。谢谢!
这与任何其他问题都不同,因为该问题专门询问如何将捕获的文本导出到 json 文件。之前的问题专门针对捕获文本。
【问题讨论】:
-
看起来你可能对
print的作用感到困惑。方法print只会打印到控制台。这就是它的用途。它永远不会在其他任何地方写入数据。当您在执行f.write()时,这是专门写入文本文件的。对于json文件,您需要使用json.dump,并且您需要使用与json 兼容的数据结构。