explaingit

zauberzeug/nicegui

15,793PythonAudience · developerComplexity · 2/5Setup · easy

TLDR

NiceGUI lets you build web-based user interfaces entirely in Python, no HTML, CSS, or JavaScript needed. Write Python code for buttons, charts, and dialogs, and they appear in the browser instantly.

Mindmap

mindmap
  root((NiceGUI))
    What it does
      Python web UIs
      No JS needed
      Live reload
    Tech stack
      FastAPI backend
      Vue and Quasar
      pip install
    Widgets
      Charts and graphs
      3D scenes
      Data binding
    Use cases
      Dashboards
      ML tools
      Robotics UI
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a live dashboard for a robotics or smart home project using Python sliders and charts refreshed as fast as every 10 ms.

USE CASE 2

Create a web UI for tweaking machine learning parameters and watching live results without learning JavaScript.

USE CASE 3

Add a quick settings screen or admin panel to an existing Python backend in just a few lines of code.

USE CASE 4

Prototype micro web apps or developer tools that run locally and reload automatically on code changes.

Tech stack

PythonFastAPIStarletteUvicornVueQuasar

Getting it running

Difficulty · easy Time to first run · 5min

In plain English

NiceGUI is a Python framework for building user interfaces that show up in a web browser. Instead of designing HTML pages or wiring up a separate JavaScript frontend, you write Python code that describes the buttons, labels, sliders, dialogs, charts, and so on, and NiceGUI takes care of rendering them in the browser and shuttling clicks and inputs back to your Python code. The tagline is "create web-based user interfaces with Python, the nice way." A minimal example from the README is just a few lines: import ui from nicegui, call ui.label and ui.button, then ui.run(), launch it with python3 main.py and the interface is reachable at http://localhost:8080/. It also reloads automatically when you change the code. You install it with pip install nicegui, and it is also available as a Docker image and on conda-forge. The framework is aimed at micro web apps, dashboards, robotics projects, smart home setups, and similar use cases, plus developer tools, for example, tweaking a machine learning algorithm or tuning motor controllers while watching live values. Beyond standard widgets, it can plot graphs and charts, render 3D scenes, accept input from virtual joysticks, annotate images, show tables and tree structures, embed audio and video, and refresh data on a timer as fast as every 10 ms. It runs in Jupyter Notebooks, supports data binding, shared and per-user pages, persistence, custom routes, global keyboard shortcuts, and theming. Under the hood, the README says NiceGUI is built on FastAPI, Starlette, and Uvicorn for the server side, with Vue and Quasar handling the browser side. The full README is longer than what was provided.

Copy-paste prompts

Prompt 1
Using NiceGUI, build a Python dashboard that shows a live-updating line chart of CPU usage refreshed every second.
Prompt 2
Create a NiceGUI web form with text inputs, a dropdown, and a submit button that calls a Python function and shows the result on the page.
Prompt 3
How do I add a 3D scene widget to a NiceGUI app? Show me a minimal working example.
Prompt 4
Build a NiceGUI app where each browser tab has its own independent state so two users do not see each other's data.
Prompt 5
Write a NiceGUI app with a virtual joystick widget that logs the X/Y position to the Python console in real time.
Open on GitHub → Explain another repo

← zauberzeug on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.