举个例子,我有两个液滴。第一个用户可以从OPTIONS_CHOICE中选择,第二个用户可以根据用户在OPTION_CHOICE中的选择进行选择。即。如果用户在第一个液滴中选择“几何亚洲”,则只能选择“封闭形式”、“蒙特卡罗”作为选择。
import sys
import PySimpleGUI as sg
OPTIONS_CHOICE = ['European', 'American', 'Geometric Asian', 'Arithmetic Asian', 'Geometric Basket', 'Arithmetic Basket']
methodology = {
'European' : ['Black Scholes', 'Binominal Tree'],
'American' : ['Binominal Tree'],
'Geometric Asian' : ['Closed Form', 'Monte Carlo'],
'Arithmetic Asian' : ['Monte Carlo', 'Monte Carlo with Control Variate'],
'Geometric Basket' : ['Closed Form', 'Monte Carlo'],
'Arithmetic Basket' : ['Monte Carlo', 'Monte Carlo with Control Variate'],
}
option_layout = [
[sg.Text('Step 1: Select an Option Type', background_color='darkseagreen')],
[sg.Text('Option Type:', background_color='darkseagreen'), sg.Drop(values=OPTIONS_CHOICE, default_value = 'European', auto_size_text=True, enable_events=True, key='option_type')],
[sg.Text('Step 2: Select a Methodology', background_color='darkseagreen')],
[sg.Text('Methodology:', background_color='darkseagreen'), sg.Drop(values=option_choice, auto_size_text=True)]
]
iv_layout = [[sg.Text('This is inside tab 5')],
[sg.Input(key='-in4-')]]
layout = [[sg.TabGroup([[sg.Tab('Option Value', option_layout, background_color='darkseagreen', key='-mykey-'),
sg.Tab('Implied Volatility', iv_layout)]], key='-group1-', tab_location='top', selected_title_color='purple')],
[sg.Button('Compute')]]
window = sg.Window('Option Calculator', layout,
default_element_size=(12, 1))
while True:
event, values = window.read()
sg.popup_non_blocking(event, values)
print(event, values)
if event == sg.WIN_CLOSED: # always, always give a way out!
break
print(event, values)
window.close()发布于 2021-04-11 18:13:19
在事件循环中的第一个拖放事件时更新第二个拖放元素。
import sys
import PySimpleGUI as sg
OPTIONS_CHOICE = ['European', 'American', 'Geometric Asian', 'Arithmetic Asian', 'Geometric Basket', 'Arithmetic Basket']
methodology = {
'European' : ['Black Scholes', 'Binominal Tree'],
'American' : ['Binominal Tree'],
'Geometric Asian' : ['Closed Form', 'Monte Carlo'],
'Arithmetic Asian' : ['Monte Carlo', 'Monte Carlo with Control Variate'],
'Geometric Basket' : ['Closed Form', 'Monte Carlo'],
'Arithmetic Basket' : ['Monte Carlo', 'Monte Carlo with Control Variate'],
}
default1 = OPTIONS_CHOICE[0]
option_choice = methodology[default1]
default2 = option_choice[0]
option_layout = [
[sg.Text('Step 1: Select an Option Type', background_color='darkseagreen')],
[sg.Text('Option Type:', background_color='darkseagreen'),
sg.Drop(values=OPTIONS_CHOICE, default_value = default1, auto_size_text=True, enable_events=True, key='option_type')],
[sg.Text('Step 2: Select a Methodology', background_color='darkseagreen')],
[sg.Text('Methodology:', background_color='darkseagreen'),
sg.Drop(values=option_choice, default_value = default2, auto_size_text=True, key='option_value')]
]
iv_layout = [[sg.Text('This is inside tab 5')],
[sg.Input(key='-in4-')]]
layout = [[sg.TabGroup([[sg.Tab('Option Value', option_layout, background_color='darkseagreen', key='-mykey-'),
sg.Tab('Implied Volatility', iv_layout)]], key='-group1-', tab_location='top', selected_title_color='purple')],
[sg.Button('Compute')]]
window = sg.Window('Option Calculator', layout,
default_element_size=(12, 1))
while True:
event, values = window.read()
print(event, values)
if event == sg.WIN_CLOSED: # always, always give a way out!
break
elif event == 'option_type':
select = values[event]
option_choice = methodology[select]
window['option_value'].update(value=option_choice[0], values=option_choice)
sg.popup_non_blocking(event, values)
window.close()https://stackoverflow.com/questions/67048341
复制相似问题