简单部件介绍#

什么是小部件?#

小部件是事件丰富的Python对象,在浏览器中具有表示形式,通常表现为像滑块、文本框等控件。

它们可以用来做什么?#

你可以使用部件为你的笔记本构建交互式图形用户界面
你还可以使用部件在 Python 和 JavaScript 之间同步有状态和无状态信息

使用小工具#

要使用小部件框架,你需要导入ipywidgets

import ipywidgets as widgets

表示#

小部件拥有自己的显示 repr,这使得它们能够使用 IPython 的显示框架进行展示。构建并返回一个 IntSlider 会自动显示该小部件(如下所示)。小部件显示在代码单元格下方的输出区域中。清除单元格输出也会移除小部件。

widgets.IntSlider()

显示()#

您也可以使用display(...)明确显示该窗口部件。

from IPython.display import display
w = widgets.IntSlider()
display(w)

多次显示调用#

如果你两次显示相同的小部件,前端显示的实例将保持彼此同步。尝试拖动下面的滑块并观察上面的滑块。

display(w)

为什么显示相同的小部件两次有效?#

部件在后端由一个单一对象表示。每次显示部件时,会在前端创建该相同对象的一个新表示。这些表示被称为视图。

Kernel & front-end diagram

关闭小部件#

您可以通过调用其close()方法来关闭一个组件。

display(w)
w.close()

小部件属性#

所有IPython小部件共享类似的命名方案。要读取小部件值,您可以查询其value属性。

w = widgets.IntSlider()
display(w)
w.value
0

同样地,要设置小部件的值,你可以设置其 value 属性。

w.value = 100

#

除了value,大多数小部件共享keys, descriptiondisabled。要查看任何特定小部件的完整同步状态属性列表,你可以查询keys属性。

w.keys
['_dom_classes',
 '_model_module',
 '_model_module_version',
 '_model_name',
 '_view_count',
 '_view_module',
 '_view_module_version',
 '_view_name',
 'behavior',
 'continuous_update',
 'description',
 'description_allow_html',
 'disabled',
 'layout',
 'max',
 'min',
 'orientation',
 'readout',
 'readout_format',
 'step',
 'style',
 'tabbable',
 'tooltip',
 'value']

用于设置组件属性初始值的简写方式#

创建小部件时,可以通过在部件构造函数中定义关键字参数来设置该部件的部分或全部初始值(如下所示)。

widgets.Text(value='Hello World!', disabled=True)

关联两个相似部件#

如果你需要以两种不同的方式显示相同的值,你将不得不使用两个不同的小部件。与其尝试手动同步这两个小部件的值,你可以使用 linkjslink 函数将两个属性链接在一起(这些之间的区别在[小部件事件](Widget Events.ipynb)中讨论)。下面,两个小部件的值被链接在一起。

a = widgets.FloatText()
b = widgets.FloatSlider()
display(a,b)

mylink = widgets.jslink((a, 'value'), (b, 'value'))

取消关联小部件#

取消小部件的链接很简单。您只需要在链接对象上调用.unlink。尝试在取消链接后更改上方的一个小部件,看看它们是否可以独立更改。

# mylink.unlink()