Profile
Back to NewsBack
GitHub Trending 1 min
Reader Mode
widgetti/ipyvuetify: Jupyter widgets based on vuetify UI components

widgetti/ipyvuetify: Jupyter widgets based on vuetify UI components

5 hours ago

ipyvuetify

Documentation</a> Version</a> Version</a> Conda Version</a> Binder</a> Black badge</a> conventional commit</a>

Jupyter widgets based on vuetify UI components which implement Google's Material Design Spec with the Vue.js framework.

A small selection of widgets:

!ipyvuetify

Installation

To install use pip:

$ pip install ipyvuetify

# for Jupyter Lab < 3 $ jupyter labextension install jupyter-vuetify

For a development installation (requires npm),

$ git clone https://github.com/mariobuikhuizen/ipyvuetify.git $ cd ipyvuetify $ pip install -e ".[dev]" $ pre-commit install $ jupyter nbextension install --py --symlink --sys-prefix ipyvuetify $ jupyter nbextension enable --py --sys-prefix ipyvuetify

Documentation

To get started with using ipyvuetify, check out the full documentation

https://ipyvuetify.readthedocs.io/

Usage

For examples see the example notebook.

The Vuetify 3 documentation can be used to find all available components and attributes (in the left side bar or use the search field). Ipyvuetify tries to stay close to the Vue.js and Vuetify template syntax, but there are some differences:

| Description | Vuetify | ipyvuetify | | ----------------------------------------------------------------------- | --------------------------------------- | --------------------------------------- | | Component names are in CamelCase and the v- prefix is stripped | | ListItem(...) | | Child components and text are defined in the children traitlet | text | Btn(children=['text', Icon(...)]) | | Flag attributes require a boolean value | | Btn(rounded=True, ...) | | Attributes are snake_case | | Select(append_icon='mdi-menu', ...) | | The v_model attribute (value in ipywidgets) contains the value directly | | Slider(v_model=25... | | Event listeners are defined with on_event | | button.on_event('click', some_method) | | | | def some_method(widget, event, data): | | Regular HTML tags can made with the Html class |

...
| Html(tag='div', children=[...]) | | The attributes class and style need to be suffixed with an underscore | | Btn(class_='mr-3', style_='...') |

Advanced usage

v-model arguments

Vue 3 uses v-model arguments for two-way bindings on component properties. The same behavior can be achieved in ipyvuetify by listening for an event named update:[propertyNameInCamelCase].

##### Vuetify:

<v-navigation-drawer v-model:rail="someProperty" ...>

##### ipyvuetify:

drawer = v.NavigationDrawer(rail=True, ...)

def update_rail(widget, event, data): drawer.rail = data

drawer.on_event('update:rail', update_rail)

(scoped) slots

##### Vuetify:

<v-menu>
  <template v-slot:activator="{ props }">
    <v-btn v-bind="props">...</v-btn>
  </template>
  <v-list>
    ...
  </v-list>
</v-menu>

##### ipyvuetify:

Menu(v_slots=[{
    'name': 'activator',
    'variable': 'x',
    'children': Btn(v_on='x.props', children=[...])
}], children=[
    List(...)
])

For non-scoped slots, variable and v_on can be omitted.

Icons

Available icons:

  • https://material.io/resources/icons/ (deprecated)
  • https://pictogrammers.github.io/@mdi/font/4.5.95/ (since v1.2.0)

Alternate usage

For a more web development centric way of development and a closer match to the Vue/Vuetify api, VuetifyTemplate can be used. See the example or Binder</a>.

Make a sub class of VuetifyTemplate, define your own traitlets and set a template string. The traitlets will be accessible from the template as if they were in a vue-model. Methods can be called by defining a method with a prefix vue_ e.g. def vue_button_click(self, data) and calling it from the template e.g. @click="button_click(e)".

NeshDevTech

NeshDevTech is a professional technology firm passionate about creating innovative, high-performance web and mobile solutions.

Core Services
  • Custom Laravel Apps
  • SPA (React & Vue.js)
  • Flutter Mobile Apps
  • SEO & Performance Opt
Get in Touch
Available for Projects

Need a high-performing system? Let's discuss your project.


© 2026 NeshDevTech. All rights reserved.

Built with

Chat with me