[英]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.