根据 PysimpleGUI 中的输入值填写输入框

Fill in Input boxes based on input value in PysimpleGUI

这是我的代码:

import PySimpleGUI as sg
import datetime
from datetime import date
import pandas as pd

columns = ["TYPE","DIRECTION","DATE","OPTION"]
param = (20,3) # size of the main window

def GUI():
    sg.theme('Dark Brown 1')
    listing = [sg.Text(u, size = param) for u in columns]
    core = [
    sg.Input(size = param),
    sg.Input(size = param),
    sg.Input(size = param),
    sg.Input(size = param)]
   
    mesh = [[x,y] for (x,y) in list(zip(listing, core))]
    layout =[[sg.Button("SEND")]]+ mesh
    window = sg.Window('Trade Entry System', layout, font='Courier 12').Finalize()
    
    
    while True:
        event, values = window.read()
        if event == "SEND":
            data = values
            a = list(data.values())
            df = pd.DataFrame(a, index = columns)
            df = df.transpose()
            print(df)

        else:
            print("OVER")
        break
    window.close()
GUI()

我想做的是,例如,如果字符串 'STOCK' 被输入到 TYPE 输入中,那么剩下的 3 个输入框应该填充预定义的值。例如,DIRECTION 填写 'B',Date 填写 'TODAY',OPTION 填写 'PUT'.

我不确定如何开始所以任何帮助都会很好

在你的TYPE输入中设置选项enable_events=True,它会在元素内容改变时生成事件,然后在你的事件循环中处理它如果元素的内容等于'STOCK' .

import datetime
from datetime import date
import pandas as pd
import PySimpleGUI as sg


def GUI():

    columns = ["TYPE","DIRECTION","DATE","OPTION"]
    param   = (20,3) # size of the main window

    sg.theme('Dark Brown 1')
    sg.set_options(font=('Courier New', 12))

    listing = [sg.Text(u, size = param) for u in columns]
    core = [
        sg.Input(size=param, enable_events=True, key='INPUT TYPE'),
        sg.Input(size=param),
        sg.Input(size=param),
        sg.Input(size=param),
    ]
    mesh = [[x,y] for (x,y) in list(zip(listing, core))]

    layout = [[sg.Button("SEND")]] + mesh
    window = sg.Window('Trade Entry System', layout, finalize=True)

    while True:
        event, values = window.read()
        if event == sg.WINDOW_CLOSED:
            break
        elif event == "INPUT TYPE" and values[event] == "STOCK":
            for element, value in zip(core[1:], ['B', 'TODAY', 'PUT']):
                element.update(value=value)

    window.close()

GUI()