[Ipywidget] Ipywidget 명령어

2022. 5. 18. 00:51·기술 견문록/ProductServing

 ipywidgets는 주피터 노트북과 IPython 커널을 위한 대화형 HTML 위젯이다. 사용자는 ipywidgets을 사용해 자신의 데이터를 제어하고 데이터의 변화를 시각화할 수 있습니다. 주피터노트북에서 Voila로 프로토타입을 제작할 때 사용할 수도있으며, 이를 이용해 Interactive한 프로토타입을 만들어낼 수 있습니다. 

 ipywidgets에는 Numeric, Text, Boolean, Selection, Upload, Image, Date Picker Widget과 Widget Events, Interact Decorator, Layout 등의 기능이 있다. 해당 기능들에 대해 간단한 코드와 display된 결과를 간단히 적어두고자 한다. 더 자세한 widgets에 대한 사용법은 공식 Documents를 확인하기 바란다.

설치

설치는 어렵지 않고, pip나 conda를 이용해 설치할 수 있다.

# pip
pip install ipywidgets

# conda
conda install -c conda-forge ipywidgets

ipywidget Document: https://ipywidgets.readthedocs.io/en/latest/user_install.html

라이브러리 Import

import ipywidgets as widgets
from IPython.display import display

 

widget의 값은 변수에 할당할 수 있으며, 이렇게 할당된 변수는 display(변수명)를 활용해 시각화할 수 있다. 

NumericWidgets

숫자값을 표시하게 설계된 위젯으로 Int, Float, FloatLog, IntRange, FloatRange가 존재한다. Slider는 값을 조절 할 수 있는 Bar를 의미한다. Range도 설정하 수 있으며, Range의 범위는 조절할 수 있다. Numeric Widges의 사용법은 거의 비슷하다. 변수.value를 하면 설정된 값을 볼 수 있다.

int_widget = widgets.IntSlider(
    value=7,
    min=0,
    max=10,
    step=1,
    orientation='horizontal', # Vertical
    description='Value:',
)

int_widget.value # 값을 볼 수 있다.

IntSlider

Text

Slider 형태가 아닌 Input Box 형태로 전달된다. Bounded가 들어간 함수는 범위 제한이 존재하고, Bounded가 없는 함수는 범위 제한이 없다는 특성이 있다. 역시 .value로 값에 접근이 가능하다. 

widgets.IntText(
    value=7,
    description='Any:',
    disabled=False
)

String widgets

Text를 입력할 수 있는 위젯으로 Text, Textarea, Password가 있다.

widgets.Text(
    value='Hello World',
    placeholder='Type something',
    description='String:'
)

Boolean widgets

True, False를 표현할 수 있는 위젯으로, ToggleButton, Checkbox가 있다. 

ToggleButton은 button_style(success, info, warning, danger)과 icon 등을 설정할 수 있으며, Checkbox는 들여쓰기 여부 설정이 가능하다. 

widgets.ToggleButton(
    value=False,
    description='Click me',
    button_style='', # 'success', 'info', 'warning', 'danger', ''
    tooltip='Description',
    icon='check' # FontAwesome에서 확인할 수 있음 : https://fontawesome.com/v4.7/icons/
)

widgets.Checkbox(
    value=False,
    description='Check me',
    indent=True # Tab키 여부라고 생각
)

ToggleButton

Selection widgets

선택을 할 수 있는 위젯이다. Dropdown, RadioButtons이 있다.

Drodown과 RadioButtons은 options를 리스트와 dict형태로 넣어줄 수도 있다. 만약 dict형태로 넣는다면, 표시는 key값으로 되지만, 실제 입력은 Value로 받아올 수 있다.

widgets.Dropdown(
    options=['1', '2', '3'],
    value='2',
    description='Number:',
    disabled=False,
)

widgets.RadioButtons(
    options=['pepperoni', 'pineapple', 'anchovies'],
    description='Topping:',
)

Upload Widget

FileUpload: 파일을 업로드하기 위한 위젯이다. accept(허용할 확장자), multiple(여러 파일을 업로드 하고 싶으면 True, 단일 파일은 False)

widgets.FileUpload(
    accept='',  # 허용할 확장자
    multiple=False  # 여러 파일을 업로드하고 싶으면 True, 단일 파일은 False
)

Image: 이미지 파일을 업로드하기 위한 위젯이다. 

file = open("image.png", "rb")
image = file.read()
widgets.Image(
    value=image,
    format='png',
    width=300,
    height=400,
)

Date Picker Widget

DatePicker: Date를 정하기 위한 위젯이다. 오늘 날짜를 기준으로 데이터를 선택할 수 있다.

widgets.DatePicker(
    description='Pick a Date',
    disabled=False
)

 

Interact Decorator

@interact 데코레이터를 사용하면 UI 컨트롤러가 생성된다. 함수의 인자를 받아서 UI가 생성되기 때문에 만약 함수의 인자 중 하나를 고정하고 싶거나, UI에서 나타나는 것을 원하지 않는 경우 fixed를 사용할 수 있다.

from ipywidgets import interact

@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)

Widget Events

위젯에서 특정 이벤트가 발생했을 때, 어떤 동작이 발생하길 원하는 경우에 사용한다. 주로 on_click이나 observe를 활용한다.  

on_click함수: 버튼이 클릭되었을 때 특정 작업을 하고 싶은 경우 on_click에 함수를 넘겨주면 된다.

button = widgets.Button(description="Click Me!")
output = widgets.Output()

display(button, output)

def on_button_clicked(button):
    with output:
        print("Hello world!")

button.on_click(on_button_clicked)

observe 함수: 위젯의 속성이 변경될 때 업데이트해주는 위젯이다.

int_range = widgets.IntSlider()
output2 = widgets.Output()

display(int_range, output2)

def on_value_change(change):
    with output2:
        print(change['new'])

int_range.observe(on_value_change, names='value')

Layout

위젯의 레이아웃을 구성하고 싶은 경우 HBox, VBox를 사용할 수 있다. 여러 개 클릭하고 싶은 버튼을 만들고 싶다면 이를 활용할 수 있다. 

from ipywidgets import Button, HBox, VBox

words = ['correct', 'horse', 'battery', 'staple']
items = [Button(description=w) for w in words]
left_box = VBox([items[0], items[1]])
right_box = VBox([items[2], items[3]])
HBox([left_box, right_box])

함수 활용 예시

 

저작자표시 비영리 변경금지 (새창열림)

'기술 견문록 > ProductServing' 카테고리의 다른 글

[Serving] LLM 시대, FastAPI와 Streamlit으로 웹 아키텍처 구축하기  (0) 2025.10.11
[FastAPI] FastAPI 기초 지식  (0) 2022.05.25
[Backend] 백엔드 기초 지식  (0) 2022.05.24
[Streamlit] Streamlit 명령어  (2) 2022.05.18
'기술 견문록/ProductServing' 카테고리의 다른 글
  • [Serving] LLM 시대, FastAPI와 Streamlit으로 웹 아키텍처 구축하기
  • [FastAPI] FastAPI 기초 지식
  • [Backend] 백엔드 기초 지식
  • [Streamlit] Streamlit 명령어
논곰
논곰
현재 2년 유목하고, 3년 이상 리테일 쪽에서 머신러닝 엔지니어로 잠시 정착 중인 AI 엔지니어입니다.
  • 논곰
    에이아이 유목민
    논곰
  • 전체
    오늘
    어제
    • 분류 전체보기 (200)
      • 기술 견문록 (22)
        • MLOps (8)
        • ProductServing (5)
        • 협업 툴 (3)
        • Error Collecting (2)
        • 컨퍼런스 (1)
        • 자격증 (1)
      • IT 견문록 (10)
        • 추가 학습 정리 (10)
      • 알고리즘_코딩테스트 (162)
        • 프로그래머스_Level1 (40)
        • 백준코딩테스트_단계별문제풀이 (14)
        • 이것이 코딩테스트다 (63)
        • 2021_알고리즘 스터디 (30일) (28)
        • 주간코딩 스터디 (주코스) (17)
      • 독서 견문록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부스트캠프_AITech_3기
    글또
    구현
    단계별문제풀이
    기술면접
    Level2
    알고리즘_스터디
    이진탐색
    프로그래머스
    알고리즘스터디
    백준
    dfs
    다시보기
    백트랙킹
    MLFlow
    부스트캠프_AITech3기
    python3
    그리디
    U_stage
    Level2_PStage
    dp
    Level1
    mrc
    ODQA
    정렬
    최단경로
    이코테
    주간회고
    파이썬 3
    그래프이론
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
논곰
[Ipywidget] Ipywidget 명령어
상단으로

티스토리툴바