繁体   English   中英

PySimpleGUI - 获取一些列表,然后使用“for”更新布局

[英]PySimpleGUI - get some lists, then update the layout using "for"

我想从 3 个网站下载 3 个列表,然后用它填充布局(文本),但更新时遇到问题,下载列表没有问题。

import PySimpleGUI as sg

list_a, list_b, list_c = [], [], []

left_menu =  [
    [sg.Button("site_a")],
    [sg.Button("site_b")],
    [sg.Button("site_c")]
]

right_menu = []

layout = [
    [
        sg.Column(left_menu),
        sg.VSeperator(),
        sg.Column(right_menu)
    ]
]

if __name__ == '__main__':
    window = sg.Window("Events", layout=layout)
    while True:
        event, values = window.read()
        if event == "site_a":
            list_a = download_from_site_a()
            #list_a = [dict(x=1, z=4, y=0), dict(x=36, z=7, y=2)]
            for a in list_a:
                right_menu += [[sg.Text(f"{a}", key="-A-")]]
                window["-A-"].update(a)
                window.Refresh()
        if event == "site_b":
            pass
        if event == "site_c":
            pass
    window.close()

目前,只提供了一种按行扩展容器布局的方法, sg.Window.extend_layout

演示代码

from random import randint
import PySimpleGUI as sg

left_menu =  [
    [sg.Button("site_a")],
    [sg.Button("site_b")],
    [sg.Button("site_c")],
]

right_menu = []

layout = [
    [sg.Column(left_menu),
     sg.VSeperator(),
     sg.Column(right_menu, expand_x=True, expand_y=True,
        scrollable=True,  vertical_scroll_only=True, key='right'),
    ],
]
window = sg.Window("Events", size=(640, 480), layout=layout)

while True:

    event, values = window.read()

    if event == sg.WINDOW_CLOSED:
        break
    elif event == "site_a":
        items = [dict(x=randint(0, 99), z=randint(0, 99), y=randint(0, 99)) for i in range(50)]
        new_rows = [[sg.Text(f"{item}", key=("-A-", i))] for i, item in enumerate(items)]
        window.extend_layout(window['right'], new_rows)
        window.refresh()
        window['right'].contents_changed()    # Update the content of `sg.Column` after window.refresh()

window.close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM