如何实现PySimpleGUI中Multiline组件内容自动保存为txt文件
PySimpleGUI Multiline内容自动保存为TXT的实现方法
你可以直接在事件循环结束、窗口关闭前读取Multiline组件内容写入本地文件,具体实现逻辑如下:
- 首先调用
window['_LOG_'].get()即可拿到该组件内的全部文本,会保留原有的换行、空格格式 - 调用Python原生文件操作将拿到的文本写入.txt文件即可
- 注意保存逻辑要放在
window.close()之前执行,否则窗口销毁后无法读取组件内容
你可以参考下面的完整示例代码:
import PySimpleGUI as sg # 布局定义,修正了你原代码里多出来的右括号笔误 layout = [ [sg.Multiline(enter_submits=True, key='_LOG_', size=(60, 20))], [sg.Button('开始运行'), sg.Button('退出')] ] window = sg.Window('日志保存示例', layout) while True: event, values = window.read() if event in (sg.WIN_CLOSED, '退出'): # 退出前执行保存逻辑 log_content = window['_LOG_'].get() # 写入txt文件,encoding指定为utf-8避免中文乱码 with open('运行日志.txt', 'w', encoding='utf-8') as f: f.write(log_content) break if event == '开始运行': # 模拟运行过程中写日志 window['_LOG_'].print('程序启动成功') window['_LOG_'].print('正在执行任务1...') window['_LOG_'].print('任务1执行完成') window['_LOG_'].print('程序运行结束') window.close()
如果有自定义需求可以调整对应参数:
- 需要修改保存路径的,把
'运行日志.txt'替换为你需要的绝对路径即可,比如Windows下可以写r'D:\日志\程序运行记录.txt' - 需要将本次日志追加到已有日志文件末尾的,把文件打开模式
'w'改为'a'即可 - 需要自动生成带时间戳的日志文件名的,可以引入datetime模块生成文件名,避免日志被覆盖
内容的提问来源于stack exchange,提问作者user16755372
相关产品推荐
相关产品推荐

