簡體   English   中英

Pysimplegui Combo 動態刷新

[英]Pysimplegui Combo dynamically refresh

今天是個好日子。 有沒有一種方法可以動態添加json在第二個組合中的Z466DEEC76ECDF5F5FCA6D38571F6324D54Z元素在第二個組合中的第二組合中的值?

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

這里不直接使用 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=title_list[0], values=title_list)

window.close()

我在嘗試更新 default_value 時遇到了類似的問題,@JasonYang 的這一行修復了它:

window['other_key'].update(value='', values=title_list)

我在做:

window['other_key'].update(values=new_val_list)
window['other_key'].update(value=auto_complete_sugg)
#window['other_key'].update(default_value=auto_complete_sugg)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM