在 ipython-widgets 中启用多选

Anw*_*ath 4 ipython jupyter-notebook ipywidgets

我有一个发展问题。我需要能够使用 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)
Run Code Online (Sandbox Code Playgroud)

ac2*_*c24 9

看一下SelectMultiple 小部件

w = widgets.SelectMultiple(
    options=['Apples', 'Oranges', 'Pears'],
    value=['Oranges'],
    #rows=10,
    description='Fruits',
    disabled=False
)
Run Code Online (Sandbox Code Playgroud)

您可以按住 Shift 键并单击来选择多个选项,然后调用w.value以获取所选值的列表。