Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python IPyWidget动态创建复选框并选择数据_Python_Jupyter Notebook_Ipython_Ipywidgets - Fatal编程技术网

Python IPyWidget动态创建复选框并选择数据

Python IPyWidget动态创建复选框并选择数据,python,jupyter-notebook,ipython,ipywidgets,Python,Jupyter Notebook,Ipython,Ipywidgets,我想创建一个复选框列表,以便用户可以从数据列表中进行选择。我已经为每一条数据创建了复选框,现在我希望勾选这些复选框以将数据添加到列表中 将IPyWidget作为小部件导入 数据=[“数据1”、“数据2”、“数据3”、“数据4”] 选定的_数据=[] 复选框=[widgets.Checkbox(值=False,描述=label)用于数据中的标签] VBox(子项=复选框) 我想做一些类似的事情 def添加到所选内容(d): 所选数据。附加(d) 复选框[0]。观察(将\u添加到所选的\u) 其

我想创建一个复选框列表,以便用户可以从数据列表中进行选择。我已经为每一条数据创建了复选框,现在我希望勾选这些复选框以将数据添加到列表中

将IPyWidget作为小部件导入
数据=[“数据1”、“数据2”、“数据3”、“数据4”]
选定的_数据=[]
复选框=[widgets.Checkbox(值=False,描述=label)用于数据中的标签]
VBox(子项=复选框)
我想做一些类似的事情

def添加到所选内容(d):
所选数据。附加(d)
复选框[0]。观察(将\u添加到所选的\u)

其中,这将向所选数据列表添加一个值。我不知道如何让VBox中的复选框像这样工作。

我找到了一个可行的解决方案,但我觉得它相当粗糙。如果有人对如何简化它有任何建议,我将不胜感激

此解决方案允许为
数据
字典中的每个键创建一个复选框。单击复选框后,所选键将添加到
selected\u data
列表中

将IPyWidget作为小部件导入
data={“label_1”:“data_1”,“label_2”:“data_2”,“label_3”:“data_3”}
名称=[]
复选框_objects=[]
对于输入数据:
checkbox\u objects.append(widgets.checkbox(value=False,description=key))
name.append(键)
arg_dict={names[i]:i的复选框,枚举中的复选框(checkbox_objects)}
ui=widgets.VBox(子项=checkbox\u对象)
选定的_数据=[]
def选择_数据(**kwargs):
选定的_数据。清除()
对于输入kwargs:
如果kwargs[key]为真:
所选数据。追加(键)
打印(所选数据)
out=widgets.interactive_输出(选择_数据,arg_dict)
显示(用户界面,输出)

我知道我来晚了,但这可能会在将来帮助其他人

在Jupyter,这是您的第一个街区:

import ipywidgets as widgets
data = ["data1", "data2", "data3", "data4"]
checkboxes = [widgets.Checkbox(value=False, description=label) for label in data]
output = widgets.VBox(children=checkboxes)
display(output)
上面将输出一个VBox,其中包含列表变量“data”中的四个选项。然后,要获取选定值的列表,可以执行以下操作:

selected_data = []
for i in range(0, len(checkboxes)):
    if checkboxes[i].value == True:
        selected_data = selected_data + [checkboxes[i].description]
print(selected_data)

请注意,我将选定的_数据列表从选择之前移动到了选择之后。这样做的原因是,如果要运行多次,for循环的自替换所选\u数据部分不会持续添加到以前选择的选项上。

请展示您尝试过的内容,并准确描述它是如何失败或未达到您的期望的。@glibdud我添加了一个最简单的工作示例和我所做的尝试过,但不幸的是没有工作