用python 写一个文本内容比对的代码并且可以用tkinter封装成一个小程序
时间: 2024-05-08 17:17:36 浏览: 89
基于python tkinter的点名小程序功能的实例代码
好的,以下是用Python实现文本内容比对的代码:
```python
import difflib
def compare_text(file1, file2):
with open(file1, 'r') as f1, open(file2, 'r') as f2:
text1 = f1.readlines()
text2 = f2.readlines()
diff = difflib.unified_diff(text1, text2)
return ''.join(diff)
```
接下来,我们可以使用Tkinter将这个代码封装成一个小程序,以下是一个简单的示例:
```python
import tkinter as tk
from tkinter import filedialog
class TextCompareApp:
def __init__(self, master):
self.master = master
self.master.title("文本比对小程序")
self.file1_path = ""
self.file2_path = ""
tk.Label(self.master, text="文件1:").grid(row=0, sticky='w')
self.file1_entry = tk.Entry(self.master, width=50)
self.file1_entry.grid(row=0, column=1)
tk.Button(self.master, text="选择文件1", command=self.select_file1).grid(row=0, column=2)
tk.Label(self.master, text="文件2:").grid(row=1, sticky='w')
self.file2_entry = tk.Entry(self.master, width=50)
self.file2_entry.grid(row=1, column=1)
tk.Button(self.master, text="选择文件2", command=self.select_file2).grid(row=1, column=2)
tk.Button(self.master, text="比对", command=self.compare).grid(row=2, column=1)
self.result_text = tk.Text(self.master, width=80, height=20)
self.result_text.grid(row=3, columnspan=3)
def select_file1(self):
self.file1_path = filedialog.askopenfilename()
self.file1_entry.delete(0, 'end')
self.file1_entry.insert(0, self.file1_path)
def select_file2(self):
self.file2_path = filedialog.askopenfilename()
self.file2_entry.delete(0, 'end')
self.file2_entry.insert(0, self.file2_path)
def compare(self):
if self.file1_path and self.file2_path:
result = compare_text(self.file1_path, self.file2_path)
self.result_text.delete('1.0', 'end')
self.result_text.insert('1.0', result)
else:
tk.messagebox.showerror("错误", "请先选择两个文件!")
if __name__ == "__main__":
root = tk.Tk()
app = TextCompareApp(root)
root.mainloop()
```
这个小程序包括了两个文件选择框和一个比对按钮,用户可以选择两个要比对的文件,然后点击比对按钮,程序将会使用我们刚刚写的比对函数对这两个文件进行比对,并将结果显示在程序窗口中。
当然,这只是一个简单的示例,你可以根据自己的需求对这个程序进行修改和优化,例如添加更多的比对方式、增加文件保存功能等等。
阅读全文