Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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
Widget 如何在ipython中使用按钮获取小部件值_Widget_Ipython_Ipython Notebook - Fatal编程技术网

Widget 如何在ipython中使用按钮获取小部件值

Widget 如何在ipython中使用按钮获取小部件值,widget,ipython,ipython-notebook,Widget,Ipython,Ipython Notebook,我有一个函数createWidgets,其目的是获取字符串列表并为每个字符串创建容器列表->1 container=文本框和复选框。然后将每个容器放入一个大容器中 我试图做的是在容器中附加一个按钮,单击该按钮将获取所有“True”并将所有修改的字符串放入数据帧中 widgelist = e.options txtBox_type = 'text_widget' # Define if Area box o regular txtbox bigContainer = cre

我有一个函数createWidgets,其目的是获取字符串列表并为每个字符串创建容器列表->1 container=文本框和复选框。然后将每个容器放入一个大容器中

我试图做的是在容器中附加一个按钮,单击该按钮将获取所有“True”并将所有修改的字符串放入数据帧中

    widgelist = e.options
    txtBox_type = 'text_widget' # Define if Area box o regular txtbox
    bigContainer = createWidgets(widgelist, txtBox_type)

    Function
    def createWidgets(widgelist, txtBox_type):

        #containerList = []
        i = 0

        for k in widgelist:
        ## Build Container widgets

           chBox_Widget = widgets.CheckboxWidget(description = str(i),value = False,)
           if txtBox_type == 'textA_widget': # Check wether txtBox should be an area txt box or not.
               txt_Widget = widgets.TextareaWidget( description = str(i), value = k)
           else:
               txt_Widget = widgets.TextWidget( description = str(i), value = k)

        container = widgets.ContainerWidget()
        container.children = [chBox_Widget, txt_Widget]
        containerList.append(container)

        i+= 1

        button = widgets.ButtonWidget(description = 'Add')
        bigContainer = widgets.ContainerWidget()
        bigContainer.children = containerList

        return  bigContainer

我访问了很多网站,花了很多天的时间在这项帮助上,非常感谢

只要我能解释这个问题,下面的代码应该会提供一个答案:

将IPython.html.widgets作为小部件导入
从IPython.display导入显示中,清除\u输出
作为pd进口熊猫
df=pd.DataFrame(列=['Thing'])
def createWidgets(widgelist):
##每个CheckboxWidget和TextWidget都包含在一个子部件中。我们使用
##list comprehension可构建这些子窗口小部件的列表。
集装箱清单=[
widgets.ContainerWidget(子项=(widgets.CheckboxWidget(description=k)
TextWidget(值=k)))
[为widgelist中的k]
bigContainer=widgets.ContainerWidget(子类=containerList)
##要将CheckboxWidget与TextWidget排列成一行,我们必须
##首先显示它们,然后删除_类('vbox')并添加_类('hbox')。这
##IPython 2.x版笔记本电脑中的一些笨拙之处有望得到解决
##在版本3.x中被修复。显示bigContainer也会显示它的子项。
显示(大容器)
对于容器列表中的c:
c、 删除_类('vbox')
c、 添加_类(“hbox”)
返回大容器
widgelist=['ThingA','ThingB','ThingC','ThingD']
bigContainer=createWidgets(widgelist,txtBox_类型)
##按钮的回调。单击。
def添加到数据帧(a):
#bigContainer的子对象也是容器,
#每个都有一个CheckboxWidget和第二个
#一个文本小部件。我们迭代它们,然后
#如果选中,将文本添加到数据帧df中,如下所示
#另一行。
对于bigContainer.children中的c:
如果c.children[0]。值:
df.loc[len(df)+1]=(c.children[1].值,)
显示(df)
清除输出()
显示(df)
button=widgets.ButtonWidget(描述='Add')
按钮。单击时(将添加到数据框)
显示(按钮)
下面是窗口小部件区域的屏幕剪辑,并在向数据框添加几行后输出


我本来会设计一些不同的代码来实现这一点,但我试图留下来
靠近您的代码组织。

这是jupyternotebooks 4上Ipython3的更新版本

只需重命名:

  • widgets.ContainerWidget->widgets.Box
  • widgets.CheckboxWidget->widgets.Checkbox
  • widgets.TextWidget->widgets.Text

参考资料:[

是的,还有更多!添加复选框是一个真正的奖励。我只接受了很少的奖励。我想我不明白的部分是,
回调按钮是如何操作的。单击。
继承
bigContainer
?是的,这可能会让人困惑。在回调函数
中,将
变量
bigContainer
实际上是一个全局变量-您可以看到上面三行定义了它。但是在函数
createWidgets(…)
中还有一个
bigContainer
的局部变量定义。搜索“python变量范围”带我去,但你会发现更多关于这方面的论述。