用python写一段代码,在windows上运行,使用tkinter,用于比较两段很长的文本content1和content2的差异,并在可视化界面上展示差异项。
时间: 2024-03-13 21:45:21 浏览: 64
python与tkinter编程
3星 · 编辑精心推荐
好的,我来给您编写这个程序。您可以把下面的代码复制到一个py文件中,然后在Windows上运行它,即可使用Tkinter界面进行文本差异比较。
```
import difflib
import tkinter as tk
class TextDiffViewer:
def __init__(self, master):
self.master = master
self.master.title("文本差异比较")
# 创建一个文本框用于输入内容1
self.textbox1 = tk.Text(self.master, height=20, width=50)
self.textbox1.grid(row=0, column=0, padx=10, pady=10)
# 创建一个文本框用于输入内容2
self.textbox2 = tk.Text(self.master, height=20, width=50)
self.textbox2.grid(row=0, column=1, padx=10, pady=10)
# 创建一个按钮用于比较两个文本的差异
self.compare_button = tk.Button(self.master, text="比较", command=self.compare_texts)
self.compare_button.grid(row=1, column=0, columnspan=2, padx=10, pady=10)
# 创建一个文本框用于显示差异
self.result_textbox = tk.Text(self.master, height=20, width=100)
self.result_textbox.grid(row=2, column=0, columnspan=2, padx=10, pady=10)
def compare_texts(self):
content1 = self.textbox1.get("1.0", "end-1c")
content2 = self.textbox2.get("1.0", "end-1c")
# 使用difflib库的SequenceMatcher类进行文本比较
matcher = difflib.SequenceMatcher(None, content1, content2)
diff = matcher.get_opcodes()
# 将差异结果转化为字符串格式
diff_str = ""
for tag, i1, i2, j1, j2 in diff:
if tag == "replace":
diff_str += "替换: {}[{}:{}]->{}[{}:{}]\n".format("文本1", i1, i2, "文本2", j1, j2)
elif tag == "delete":
diff_str += "删除: {}[{}:{}]\n".format("文本1", i1, i2)
elif tag == "insert":
diff_str += "插入: {}[{}:{}]->{}[{}:{}]\n".format("文本2", j1, j2, "文本1", i1, i2)
elif tag == "equal":
continue
# 在结果文本框中显示差异
self.result_textbox.delete("1.0", "end")
self.result_textbox.insert("1.0", diff_str)
if __name__ == "__main__":
root = tk.Tk()
app = TextDiffViewer(root)
root.mainloop()
```
运行程序后,您可以在左侧文本框输入content1,右侧文本框输入content2,然后点击“比较”按钮,即可在下方的结果文本框中看到差异信息。差异信息以字符串形式展示,每行表示一个差异项,包括被替换、被删除、被插入的文本及其所在位置。
阅读全文