1、ipywidgets
ipywidgets
ipywidgets可以用于在jupyter notebook當中進行界面設計,以及一些簡單的交互式控件操作。
官方文檔有詳細介紹,本文主要將常用的部件進行了演示,如需詳細研究,請移步官方文檔ipywidgets
一、安裝
pip install ipywidgets二、基礎方法
1、滑塊interact
interact方法可以實現一些基礎的交互式控件,可以自動生成函數參數的UI控件。
from ipywidgets import interact,fixed# 定義一個可供操作的函數 def foo(x):return x當傳遞一個參數x=10,會生成一個滑塊并且綁定到函數參數
interact(foo,x=10)傳遞布爾值,生成復選框
interact(foo,x=True)傳遞字符串,生成文本框
interact(foo,x="hello world")傳遞列表,生成下拉框
interact(foo,x=['a','b','c','d'])傳遞字典,生成下拉框,鍵值對應
interact(foo,x={"a":1,"b":2,"c":3})傳遞元組,(min,max,step)最小值,最大值,步長
interact(foo,x=(1,9,1))補充:還可以使用浮點數,生成浮點數滑塊。
以上方法都是將一個參數生成為特定值,當需要多個參數時就需要用到**fixed**參數。
def func(p,q):return (p,q)interact(func,p=5,q=fixed(20)) # 設定20為固定值2、按鈕
import ipywidgets as widgets from ipywidgets import Layout1、button(普通按鈕)
widgets.Button(description='點我啊!!!', # 按鈕提示disabled=False,button_style='info', # 'success', 'info', 'warning', 'danger' or '' 按鈕樣式tooltip='Click me',layout = Layout(width="98%",height="50px"), # 按鈕大小調整 )2、ToggleButton(布爾值按鈕)
用于顯示布爾值
widgets.ToggleButton(value=False,description='點我!!',disabled=False,button_style='warning', # 'success', 'info', 'warning', 'danger' or ''tooltip='Description',icon='check',layout = Layout(width="60%",height='30px') )3、RadioButtons(單選按鈕)
widgets.RadioButtons(options=['numpy', 'pandas', 'matplotlib'], # value='pineapple',description='',disabled=False )4、ToggleButtons
widgets.ToggleButtons(options=['numpy', 'pandas', 'matplotlib'],description='Speed:',disabled=False,button_style='success', # 'success', 'info', 'warning', 'danger' or '' # tooltips=['Description of slow', 'Description of regular', 'Description of fast'], # icons=['check'] * 3 )3、選擇小部件
1、Dropdown(下拉框)
widgets.Dropdown(options=['1', '2', '3'],value='2',description='Number:',disabled=False, )2、Select(單選框)
widgets.Select(options=['Linux', 'Windows', 'OSX'],value='OSX',# rows=10,description='OS:',disabled=False )3、SelectionSlider(滑動部件)
widgets.SelectionSlider(options=['low level', 'ordinary', 'well', 'excellent'],value='ordinary',description='我的Python等級',disabled=False,continuous_update=False,orientation='horizontal',readout=True )4、SelectMultiple(復選框)
widgets.SelectMultiple(options=['Apples', 'Oranges', 'Pears'],value=['Oranges'],#rows=10,description='Fruits',disabled=False )3、進度條
1、IntProgress (整數型進度條)
widgets.IntProgress(value=5, # 進度條數值min=0,max=10,step=1,description='Loading:',bar_style='danger', # 'success', 'info', 'warning', 'danger' or ''orientation='horizontal' )2、FloatProgress (浮點型進度條)
widgets.FloatProgress(value=5.5,min=0,max=10.0,step=0.1,description='Loading:',bar_style='warning',orientation='horizontal' )4、文本
1、Text(固定大小)
widgets.Text(value='Hello World',placeholder='Type something',description='String:',disabled=False )2、Textarea(可拉伸)
widgets.Textarea(value='Hello World',placeholder='Type something',description='String:',disabled=False )3、BoundedIntText、BoundedFloatText(限值文本)
# 整數 widgets.BoundedIntText(value=7,min=0,max=10,step=1,description='Text:',disabled=False ) # 浮點數 widgets.BoundedFloatText(value=7.5,min=0,max=10.0,step=0.1,description='Text:',disabled=False )5、圖片
file = open("小寶貝.jpg", "rb") image = file.read() widgets.Image(value=image,format='jpg',width=300,height=400, )6、日期選擇器
widgets.DatePicker(description='Pick a Date',disabled=False )7、容器/布局小部件
1、Box
用于顯示組件當中的多個小部件
words = ['correct', 'horse', 'battery', 'staple'] items = [Button(description=w) for w in words] Box([items[0], items[1], items[2], items[3]])2、HBox
水平顯示組件中多個小部件
words = ['correct', 'horse', 'battery', 'staple'] items = [Button(description=w) for w in words] HBox([items[0], items[1], items[2], items[3]])3、VBox
垂直顯示組件中的多個小部件
words = ['correct', 'horse', 'battery', 'staple'] items = [Button(description=w) for w in words] VBox([items[0], items[1], items[2], items[3]])4、折疊數據
accordion = widgets.Accordion(children=[widgets.IntSlider(), widgets.Text()]) accordion.set_title(0, '滑塊') accordion.set_title(1, '文本') accordion5、標簽
tab_contents = ['基本', '股池', '買策', '賣策', '選股'] children = [widgets.Text(description=name) for name in tab_contents] tab = widgets.Tab() tab.children = children for index,i in enumerate(tab_contents):tab.set_title(index,i) # 需要索引與值兩個參數 tab6、折疊數據與標簽嵌套
tab_nest = widgets.Tab() tab_nest.children = [accordion, accordion] tab_nest.set_title(0, '第一塊') tab_nest.set_title(1, '第二塊') tab_nest8、播放動畫小部件
# 播放動畫結合進度條 play = widgets.Play( # interval=10,value=0,min=0,max=100,step=1,description="Press play",disabled=False )slider = widgets.IntProgress(value=100,# 進度條數值min=0,max=100,step=1,description='Loading:',bar_style='danger', # 'success', 'info', 'warning', 'danger' or ''orientation='horizontal' )widgets.jslink((play, 'value'), (slider, 'value')) widgets.HBox([play, slider])三、常用事件
1、on_click()
# 查看某個部件的文檔 print(widgets.Button.on_click.__doc__)按鈕點擊是無狀態發生的,因此想要將事件由前端傳遞到后端,就需要通過on_click方法,在點擊時執行相應的函數:
button = widgets.Button(description="點我啊!!") display(button)# 點擊執行事件,點擊一次,執行一次 def on_button_clicked(b):print("Button clicked.")button.on_click(on_button_clicked)2、Traitlet事件
observe
observe方法可以用于注冊回調
int_range = widgets.IntSlider() display(int_range)# 每一次事件都會回調當前函數,然后打印`change['new']`中對應的值 def on_value_change(change):print(change['new'])int_range.observe(on_value_change, names='value')
button_clicked(b):
print(“Button clicked.”)
button.on_click(on_button_clicked)
[外鏈圖片轉存中...(img-t6WOeJRd-1578992575048)]### 2、Traitlet事件#### observeobserve方法可以用于注冊回調```python int_range = widgets.IntSlider() display(int_range)# 每一次事件都會回調當前函數,然后打印`change['new']`中對應的值 def on_value_change(change):print(change['new'])int_range.observe(on_value_change, names='value')[外鏈圖片轉存中…(img-pXoFWyz3-1578992575048)]
總結
以上是生活随笔為你收集整理的1、ipywidgets的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS开发非常用库
- 下一篇: 如何一键修改CAD图纸底图颜色?