【问题标题】:Multiline window and list多行窗口和列表
【发布时间】:2021-09-21 20:32:16
【问题描述】:

我希望我的多行元素看起来像这样:

Text 1
Text 2
Text 3

但它看起来像这样:

{{Text 1}} {{Text 2}} {{Text 3}}

我的代码:

import PySimpleGUI as sg

layout_list = [
    ['Text 1'],
    ['Text 2'],
    ['Text 3']
]

layout = [
    [sg.Multiline(layout_list, s=(60, 5), disabled=True, key='key-multiline')]
]

window = sg.Window('Help!', layout=layout, margins=(1, 1))

while True:
    event, values = window.read()
    window.read()

【问题讨论】:

    标签: python python-3.x pysimplegui


    【解决方案1】:

    参考Curly Brackets issue in a PySimpleGui LIST box and Python 3

    import PySimpleGUI as sg
    
    layout_list = [
        ['Text 1'],
        ['Text 2'],
        ['Text 3'],
    ]
    
    text = '\n'.join(item[0] for item in layout_list)    # Convert layout_list into string
    
    layout = [
        [sg.Multiline(text, s=(60, 5), disabled=True, key='key-multiline')]
    ]
    
    sg.Window('Help!', layout=layout, margins=(1, 1)).read(close=True)
    

    【讨论】:

    • 谢谢!我想让列表保持相同的格式,所以这真的很有帮助。
    【解决方案2】:

    我设法使用Listbox 而不是Multiline 得到它。代码如下所示。请注意,在使用 Listbox 时,layout_list 不是列表列表,而只是一个列表。

    import PySimpleGUI as sg                        # Part 1 - The import
    
    
    layout_list = [
        'Text 1',
        'Text 2',
        'Text 3'
    ]
    
    layout = [
        [sg.Listbox( values= layout_list, s=(60, 5), disabled=True, key='key-multiline')]
    ]
    
    window = sg.Window('Help!', layout=layout, margins=(1, 1))
    
    while True:
        event, values = window.read()
        window.read()
    

    输出窗口根据需要。

    【讨论】:

    • 谢谢,但我选择了 Jason Yang 的答案,因为我想让列表保持相同的形式。
    • 是的!确实! +1 杰森的回答,它保留了输入格式!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 2022-06-10
    相关资源
    最近更新 更多