在IPython小部件中启用多选

3

我有一个开发问题。我需要使用ipython-widgets在Python中从下拉菜单中同时选择多个项目。到目前为止,我能够选择一个单选框小部件菜单中的选项,选择后会绘制相应的统计数据。我已经贴出了我的代码,如果你能帮助我解决这个问题,我将不胜感激。

import numpy as np
import pandas as pd
import ipywidgets as widgets
import matplotlib.pyplot as plt
import panel as pn
pn.extension()


classes= widgets.Dropdown(
description='Products:',
options= list(output_table.class_m.unique())
)


start_year = widgets.BoundedFloatText(
    value=output_table.year.min(),
    min=output_table.year.min(),
    max=output_table.year.max(),
    step=1,
    description='Start Year:',
    disabled=False,
    color='black'
)
end_year = widgets.BoundedFloatText(
    value=output_table.year.max(),
    min=output_table.year.min(),
    max=output_table.year.max(),
    step=1,
    description='End Year:',
    disabled=False,
    color='black'
)


output=widgets.Output()

def response(name, start, end):
    name = classes.value
    output.clear_output()
    df2 = output_table.copy()
   # Filter between min and max years (inclusive)
    df2 = df2[(df2.year >= start) & (df2.year <= end)]
    with output:
        if len(df2) > 0:
            plot1 = df2[df2['class_m'] == name].groupby(['month']).agg({'units':'sum'}).reset_index()
            plot1.plot(x='month', y='units')
            clear_output(wait=True)
            plt.show()
        else:
            print("No data to show for current selection")
def event_handler(change):
    response(change.new, start_year.value, end_year.value)

def start_year_handler(change):
    response(classes.value, change.new, end_year.value)

def end_year_handler(change):
    response(classes.value, start_year.value, change.new)

classes.observe(event_handler, names='value')
start_year.observe(start_year_handler, names = 'value')
end_year.observe(end_year_handler, names = 'value')

display(classes)
display(start_year)
display(end_year)
1个回答

9

实际上,“w”已经是所选项的元组,它没有“w.value”属性。 - Isotope

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接