如何将 stdout 和 stderr 重新路由到 Frame 元素(即不是 Multiline 元素)

问题描述 投票:0回答:1

下面的

Multiline
重新路由有效,但这与我真正想要的不匹配:

output_layout = [   
        [sg.Text("OUTPUT")],
        [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)]]

我检查了类似的问题和此文档关于框架参数:我找不到任何将标准输出重新路由到框架元素的内容。

我当前的

Frame
元素,“按原样”,尚未重新路由:

# output_layout = [
#     sg.Frame(title= frameTitles[12],font=FrameFontCol1, layout=[[sg.Column(cb12, 
#     size= (0 , size[1]) ) ]], expand_x=True)]
#     -> I tried to apply the stdout re-routing args here, but it does not "fly" obv.

也许这是不可能的,或者是否有一种干净的解决方法或嵌入/嵌套解决方案?

python user-interface pysimplegui
1个回答
0
投票

根据评论中的建议,我可以将

MultiLine
元素嵌入到
Frame
元素中,如下所示:

output_layout = [ sg.Frame("OUTPUT",  
                [[sg.Multiline("", size=(int(size[0]/2),5),font='Courier 8', text_color="#DBFF33",
                    reroute_stdout=True, reroute_stderr=True,
                    echo_stdout_stderr=True, autoscroll=True, auto_refresh=True, )]], expand_x=True)
                ]

希望它可以帮助任何人。

© www.soinside.com 2019 - 2024. All rights reserved.