首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HBox中的按钮删除/隐藏HBox和子小部件

使用HBox中的按钮删除/隐藏HBox和子小部件
EN

Stack Overflow用户
提问于 2019-08-30 04:48:22
回答 1查看 610关注 0票数 1

我正在尝试为我制作的一个模块(see this SO question)制作一个输入小部件。

输入小部件应该有一个标题栏和下面可变数量的输入行。我想在每一个输入行的末尾都有一个删除按钮。

理想情况下,delete按钮应该删除容器小部件和所有子小部件,但也可以隐藏容器小部件和子小部件。

我还没能找到解决这个问题的有用的方法。

目前我得到了这段代码,但我不知道如何解决这个问题。

代码语言:javascript
复制
import ipywidgets as w
​
def add_btn_clicked(b):
    input_box.children = (input_box.children[0], line()) + input_box.children[1:]
​
def delete_btn_clicked(b):
    # ???
    with output:
        print(b.keys)
    return None

add = w.Button(icon="plus-circle")
add.on_click(add_btn_clicked)
​
title = w.HBox([w.Label(value=str(i)) for i in range(3)]+[add])
​
def line():
    delete = w.Button(icon="trash")
    delete.on_click(delete_btn_clicked)
    return w.HBox([w.FloatText(value=i) for i in range(3)]+[delete])
​
input_box = w.VBox([title,line()])
output = w.Output()
​
display(input_box)
display(output)

有没有一种方法可以通过点击按钮来判断父元素是什么,或者有其他方法来实现我正在尝试的东西?

EN

回答 1

Stack Overflow用户

发布于 2019-08-31 00:04:49

您可以单独创建小部件和容器,然后在组装到一起之前将子组件上的.parent属性定义为容器。这样,当单击按钮时(使用.parent.layout.display = 'none'),您可以有效地隐藏容器。

代码语言:javascript
复制
import ipywidgets as w

def add_btn_clicked(b):
    input_box.children = (input_box.children[0], line()) + input_box.children[1:]

def delete_btn_clicked(b):
    b.parent.layout.display = 'none'

add = w.Button(icon="plus-circle")
add.on_click(add_btn_clicked)

title = w.HBox([w.Label(value=str(i)) for i in range(3)]+[add])

def line():
    delete = w.Button(icon="trash")
    delete.on_click(delete_btn_clicked)
    val_widgets = [w.FloatText(value=i) for i in range(3)]
    container = w.HBox()
    delete.parent = container
    for widg in val_widgets:
        widg.parent = container
    children = val_widgets + [delete]
    container.children = children
    return container

input_box = w.VBox([title,line()])
output = w.Output()

display(input_box)
display(output)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57717562

复制
相关文章

相似问题

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