Pysimplegui组合动态刷新

2024-06-17 10:07:51 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好。 当第一个组合中的json元素被选中时,有没有办法在第二个组合中动态添加json值

import json
import PySimpleGUI as sg


file = {"item 1": [{"name": "title 1"}, {"name": "title 2"}], "item 2": [{"name": "title 3"}, {"name": "title 4"}]}
j_file = json.dumps(file)

layout = [[sg.Text('items'), sg.Combo(j_file, key='some_key', size=(30, 0))],  # there must be items
          [sg.Text('titles'), sg.Combo(j_file, key='other_key', size=(30, 0))]]  # there must be values of selected item
window = sg.Window('testing', layout)
while True:
    event, value = window.read()
    if event == sg.WINDOW_CLOSED:
        break

Tags: keytextnameimportjsonsizetitleitems
1条回答
网友
1楼 · 发布于 2024-06-17 10:07:51

这里不直接使用json数据j_file,而是使用字典file

选择第一个组合后,将生成一个事件,然后使用新列表更新第二个组合

import json
import PySimpleGUI as sg


file = {"item 1": [{"name": "title 1"}, {"name": "title 2"}], "item 2": [{"name": "title 3"}, {"name": "title 4"}]}
j_file = json.dumps(file)

layout = [[sg.Text('items'), sg.Combo(list(file.keys()), enable_events=True, key='some_key', size=(30, 0))],  # there must be items
          [sg.Text('titles'), sg.Combo([], key='other_key', size=(30, 0))]]  # there must be values of selected item
window = sg.Window('testing', layout)

while True:
    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break
    elif event =='some_key':
        item = values[event]
        title_list = [i["name"] for i in file[item]]
        window['other_key'].update(value='', values=title_list)

window.close()

相关问题 更多 >