# 文档:简易文件读写及日志记录的Python GUI程序


背景介绍

Tkinter是Python标准的图形用户界面库,适用于创建窗口、按钮、文本输入框等GUI元素。本程序通过Tkinter实现一个核心功能:
1. 读取本地文本文件并保存内容
2. 显示日志记录

程序通过对话框实现用户输入,保存内容后自动保存到output.txt,同时记录日志到log.txt,并通过文件流实现内容的持久化。

技术思路

  1. 使用tkinter.Tk创建窗口,包含输入框、保存按钮和日志显示区域
  2. 输入框接收文件路径,保存按钮执行文件写入操作
  3. 日志显示区域记录每次保存的内容
  4. 使用filedialog模块实现文件路径的对话框
  5. 文件处理通过open函数读写文本文件

代码实现

import tkinter as tk

def save_file_and_log(path, content):
    try:
        with open(path, 'w') as f:
            f.write(content)
        print(f"保存文件:{path}")
        # 日志记录
        with open('log.txt', 'a') as log:
            log.write(f"【文件信息】\n文件路径:{path}\n内容:{content}\n时间:{datetime.now().strftime('%Y-%m-%d %H:%M')}\n")
    except Exception as e:
        print(f"文件操作失败: {e}")

def main():
    root = tk.Tk()
    root.title('文件读写及日志记录')

    # 输入框
    path_input = tk.Entry(root, width=30)
    path_input.grid(row=1, column=0, padx=5, pady=5)

    # 保存按钮
    save_button = tk.Button(root, text='保存文件', command=lambda path= path_input.get():
        if path:
            content = tk.Text(root, height=1, width=50, state='normal')
            content.pack_forget()
            content.delete('1.0', 'end')
            save_button.config(state='disabled')
            path_input.delete(0, 'end')
            path_input.insert(0, 'input.txt')
            # 保存文件
            save_file_and_log('input.txt', content.get('1.0', 'end-1c'))
            save_button.pack()

            # 显示日志
            log_text = tk.Text(root, height=1, width=50, state='normal')
            log_text.pack_forget()
            log_text.insert('1.0', 'end')
            log_text.configure(state='disabled')
        else:
            print("文件路径为空,请输入路径!")

    # 日志显示区域
    log_display = tk.Text(root, height=1, width=50, state='normal')
    log_display.pack_forget()

    # 启动程序
    root.mainloop()

if __name__ == "__main__":
    main()

总结

本程序通过Tkinter实现了一个核心功能,具有以下特点:

  1. 文件读写操作通过open函数实现,确保内容持久化
  2. 日志记录通过filedialog实现,确保日志内容可追踪
  3. 文件路径输入通过对话框实现,支持用户输入
  4. 程序在1-3天内完成开发,支持本地运行

该程序展示了Python在GUI开发中的核心技能,包括文件读写处理、数据可视化和事件响应机制。