{"id":6683,"library":"ipyvuetify","title":"ipyvuetify","description":"ipyvuetify is a Python library that provides Jupyter widgets based on Vuetify UI components, implementing Google's Material Design specification with the Vue.js framework. It allows users to build modern, interactive graphical user interfaces directly within Jupyter notebooks (classic and Lab) and dashboards (Voila). The library is currently at version 1.11.3, with an experimental alpha branch for 3.x, and aims to offer a richer set of customizable and composable widgets compared to standard ipywidgets.","status":"active","version":"1.11.3","language":"en","source_language":"en","source_url":"https://github.com/widgetti/ipyvuetify","tags":["jupyter","widgets","vuetify","material-design","gui","frontend"],"install":[{"cmd":"pip install ipyvuetify","lang":"bash","label":"PyPI"},{"cmd":"jupyter labextension install jupyter-vuetify","lang":"bash","label":"JupyterLab Extension (required for JupyterLab)"}],"dependencies":[{"reason":"ipyvuetify is built on top of the ipywidgets machinery.","package":"ipywidgets","optional":false},{"reason":"Core dependency for Vue.js integration, known to cause issues in environments like Google Colab.","package":"jupyter-vue","optional":false}],"imports":[{"note":"The common convention is to import ipyvuetify as 'v' for brevity, similar to 'np' for NumPy.","wrong":"import ipyvuetify","symbol":"v","correct":"import ipyvuetify as v"},{"note":"Vuetify component names (e.g., `<v-btn>`) are translated to Python as CamelCase classes with the 'v-' prefix stripped (e.g., `v.Btn`).","wrong":"v.v_btn() or v.button()","symbol":"Btn","correct":"v.Btn()"}],"quickstart":{"code":"import ipyvuetify as v\nfrom IPython.display import display\n\n# Create a text field to display messages\nmessage_output = v.TextField(label=\"Message\", readonly=True, v_model=\"Click the button!\")\n\n# Define a callback function for the button click\ndef on_button_click(widget, event, data):\n    message_output.v_model = \"Button was clicked!\"\n\n# Create a button and attach the event listener\nbutton = v.Btn(children=[\"Click Me\"])\nbutton.on_event('click', on_button_click)\n\n# Display the widgets within a container\ndisplay(v.Container(children=[button, message_output]))","lang":"python","description":"This quickstart demonstrates creating a button and a text field, attaching an event listener to the button, and updating the text field's value using the `v_model` attribute. It showcases basic widget creation, event handling, and displaying components in a Jupyter environment."},"warnings":[{"fix":"Always refer to the ipyvuetify documentation's 'Usage' section or translate directly from Vuetify documentation by applying ipyvuetify's specific naming and API conventions.","message":"ipyvuetify's API conventions differ significantly from standard ipywidgets and direct Vuetify HTML. Component names are CamelCase with 'v-' stripped (e.g., `v.Btn` for `<v-btn>`). Attributes are snake_case (e.g., `offset_y` for `offset-y`). Child components and text are passed via the `children` traitlet, and event listeners are set using the `.on_event(event_name, callback)` method. CSS `class` and `style` attributes require an underscore suffix (`class_`, `style_`).","severity":"breaking","affected_versions":"All versions"},{"fix":"To update list or dictionary traitlets, always assign a *new* list or dictionary object. For example, `my_widget.items = my_widget.items + ['New Item']` or `my_widget.items = [*my_widget.items, 'New Item']`.","message":"In-place mutations of list or dictionary traitlets (e.g., appending to `my_list_traitlet.append('item')`) are not detected by ipywidgets' change notification system, which ipyvuetify relies upon. This means the frontend widget will not update.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Initialize interactive components with `v_model` (e.g., `v.Slider(v_model=25)`), and read the current state from `widget.v_model`.","message":"The `value` attribute on ipyvuetify widgets is primarily for *setting* an initial value and does not reflect user interactions or two-way data binding. For interactive components where the user's input needs to be read, use the `v_model` attribute instead.","severity":"gotcha","affected_versions":"All versions"},{"fix":"For stable applications, strictly pin to `ipyvuetify<3.0.0` (i.e., use versions in the 1.x series).","message":"ipyvuetify 3.0.0a2 and subsequent 3.x alpha releases are unstable, based on Vue 3.x, and primarily for future Solara 3.0 integration. They may have significant visual and functional breakage (e.g., issues with Vuetify2 appearance) and are not recommended for general use with ipyvuetify 1.x-based applications.","severity":"breaking","affected_versions":"3.0.0a2 and later alpha/prerelease versions"},{"fix":"Run `jupyter labextension install jupyter-vuetify` in your terminal where JupyterLab is installed.","message":"For users of JupyterLab, a separate JupyterLab extension must be installed (`jupyter labextension install jupyter-vuetify`) in addition to the pip package for ipyvuetify widgets to render correctly.","severity":"gotcha","affected_versions":"All versions when using JupyterLab"},{"fix":"Consult specific Colab-related issues on the `ipyvuetify` GitHub or Colab documentation for current workarounds, often involving programmatic loading of `jupyter-vue`.","message":"In Google Colab environments, `ipyvuetify` widgets may fail to render with an 'Unknown dependency jupyter-vue' error due to how Colab handles widget dependencies. This typically requires specific workarounds involving ensuring the `jupyter-vue` module is explicitly loaded.","severity":"gotcha","affected_versions":"All versions when used in Google Colab"},{"fix":"Downgrade `ipykernel` to version <= 6.29 if using `v.FileUpload`, or avoid using the `v.FileUpload` widget until a fix is released.","message":"The `v.FileUpload` widget has been reported to cause kernel crashes (`Kernel died`) when used with `ipykernel` versions greater than 6.29.","severity":"gotcha","affected_versions":"All versions when using ipykernel > 6.29"}],"env_vars":null,"last_verified":"2026-04-15T00:00:00.000Z","next_check":"2026-07-14T00:00:00.000Z","problems":[]}