Python tkinter-保存文本并保持文本格式

时间:2018-03-09 14:09:53

标签: python tkinter


我有一个tkinter纯文本编辑器,用户可以将文本保存为" .doc"文件,打开文件,使文本变为粗体,带下划线等。当我将文本加粗并保存文件时。当我重新打开文件时,文本在此之后不再是粗体。我能做些什么来确保这种情况发生吗?
如果您希望看到任何代码,请告诉我们!

1 个答案:

答案 0 :(得分:1)

您可以使用dump方法代替get。您可以在以下页面找到简短的文档 - tcl/tkeffbot.org

这样您就可以保存所有用户数据和格式信息(标签)。但是,一旦加载文件,您将不得不编写一个代码来解析数据并添加正确的格式,因为没有提供自动方式。

编辑:看看这个简单的例子:

from Tkinter import *

def onclick():
    pass

root = Tk()
text = Text(root)
text.insert(INSERT, "Hello World!")
text.pack()

text.tag_add("hello_tag", "1.0", "1.5")
text.tag_config("hello_tag", background="yellow", foreground="black")

file = open("output.txt","w")
file.write(str(text.dump('1.0', END)))
file.close()

root.mainloop()

output.txt看起来像这样:

[('tagon', 'hello_tag', '1.0'), ('text', 'Hello', '1.0'), ('tagoff', 'hello_tag', '1.5'), ('text', ' World!', '1.5'), ('mark', 'insert', '1.12'), ('mark', 'current', '1.12'), ('text', '\n', '1.12')]

每个元组都有关于key1 value1 index1的信息。您的任务是迭代这个元组数组并插入适当的文本数据或将标记信息添加到文本小部件。有关这些值的完整说明,请访问:dump()

您说输出格式为.doc,代表MS Word文件格式。可以从Word (.doc) Binary File Format下载此格式的完整描述。这是一项非常复杂的任务,可以自行将此格式加载到Tkinter小部件,但任务是相同的。您需要读取文件并将MS Word格式转换为您在应用程序中使用的格式。