如何修改PySimpleGUI中sg.Print窗口的名称?
解决方案与优化建议
一、修改sg.Print的调试窗口名称
你之前直接将print赋值为sg.Print,其实sg.Print支持通过title参数自定义窗口标题,只需用偏函数或lambda包装即可保留原生print的参数特性:
方法1:使用functools.partial(推荐)
import PySimpleGUI as sg from functools import partial # 包装sg.Print,指定自定义窗口标题 print = partial(sg.Print, title="我的自定义调试窗口") # 测试调用 print("这是自定义标题窗口的输出内容")
方法2:使用lambda
import PySimpleGUI as sg print = lambda *args, **kwargs: sg.Print(*args, **kwargs, title="我的自定义调试窗口")
设置完成后,调用print弹出的窗口就是自定义标题,后续仍可通过sg.PrintClose()正常关闭。
二、优化自定义GUI输出框的print函数
你写的自定义sg_Print可以从兼容性、效率和体验三个维度优化:
优化后代码示例
import PySimpleGUI as sg def create_custom_print(output_element): def sg_Print(*args, sep=' ', end='\n', **kwargs): # 兼容原生print的sep、end参数 output_str = sep.join(map(str, args)) + end # 直接追加内容,无需先获取原有文本(更高效) output_element.update(value=output_str, append=True) # 自动滚动到底部,始终显示最新输出 output_element.set_vscroll_position(1.0) # 可选:同时输出到控制台 __builtins__.print(*args, sep=sep, end=end, **kwargs) return sg_Print # 构建GUI窗口 layout = [ [sg.Multiline(size=(60, 15), key='-OUTPUT-')], [sg.Button('测试输出'), sg.Button('退出')] ] window = sg.Window('主窗口', layout) # 绑定自定义print函数 print = create_custom_print(window['-OUTPUT-']) # 事件循环 while True: event, values = window.read() if event == sg.WIN_CLOSED or event == '退出': break if event == '测试输出': print("测试内容1", "测试内容2", sep=' | ', end=' -- 结束\n') print("这是新的一行输出") window.close()
优化点说明
- 兼容原生参数:支持
sep(分隔符)和end(结尾符),和原生print行为完全一致; - 提升效率:使用
append=True直接追加内容,避免每次获取整个文本再拼接的冗余操作; - 优化体验:自动滚动到底部,无需手动翻找最新输出;
- 模块化设计:通过闭包封装输出元素,避免依赖全局窗口对象;
- 可选双输出:保留控制台输出,方便调试时同时查看GUI和控制台内容。
内容的提问来源于stack exchange,提问作者BioFind17
相关产品推荐
相关产品推荐

