首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PySimpleGUI中:如何根据用户在另一个Drop对象中的选择来设置Drop对象的值?

在PySimpleGUI中:如何根据用户在另一个Drop对象中的选择来设置Drop对象的值?
EN

Stack Overflow用户
提问于 2021-04-11 17:48:07
回答 1查看 63关注 0票数 1

举个例子,我有两个液滴。第一个用户可以从OPTIONS_CHOICE中选择,第二个用户可以根据用户在OPTION_CHOICE中的选择进行选择。即。如果用户在第一个液滴中选择“几何亚洲”,则只能选择“封闭形式”、“蒙特卡罗”作为选择。

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-11 18:13:19

在事件循环中的第一个拖放事件时更新第二个拖放元素。

代码语言:javascript
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67048341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档