You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将stdout和stderr重定向至PySimpleGUI的Frame元素而非Multiline

解决方案

首先明确:Frame元素本身不支持标准输出重定向,这个功能是PySimpleGUI里Multiline元素独有的特性,所以没法直接给Frame加重定向参数实现需求。

但可以用嵌套的方式解决——把带重定向配置的Multiline放到Frame的布局里,这样既保留Frame的结构,又能实现输出重定向效果。

示例代码(适配你的Frame结构)

把原来Frame里的Column替换成带重定向的Multiline,代码如下:

output_layout = [
    [sg.Frame(title=frameTitles[12], font=FrameFontCol1, layout=[
        # 将带重定向的Multiline嵌套进Frame布局
        [sg.Multiline(size=(0,5), font='Courier 8', text_color="#DBFF33",
                     expand_x=True, expand_y=True, write_only=True, border_width=2,         
                     reroute_stdout=True, reroute_stderr=True, echo_stdout_stderr=True,
                     autoscroll=True, auto_refresh=True)]
    ], expand_x=True)]
]

如果需要保留原有的Column(cb12)

要是你需要保留cb12这个Column的内容,可以把它和Multiline放在Frame的布局里组合,比如上下排列:

output_layout = [
    [sg.Frame(title=frameTitles[12], font=FrameFontCol1, layout=[
        [sg.Column(cb12, size=(0, size[1]))],
        [sg.Multiline(size=(0,5), font='Courier 8', text_color="#DBFF33",
                     expand_x=True, write_only=True, border_width=2,         
                     reroute_stdout=True, reroute_stderr=True, echo_stdout_stderr=True,
                     autoscroll=True, auto_refresh=True)]
    ], expand_x=True)]
]

这样就能在Frame容器里实现标准输出的重定向显示了。

内容的提问来源于stack exchange,提问作者hornetbzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 03:14:53