Open-source project
hoffstadt/DearPyGui avatar
hoffstadt/DearPyGui

Dear PyGui: An Immediate Mode GUI Toolkit for Python That Skips the Widget Tree

Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies.

15,619 stars783 forksC++MIT

At a glance

What is it?
Dear PyGui wraps Dear ImGui and its ImPlot and imnodes extensions into a Python API with GPU-based rendering and minimal dependencies. It targets developers who want fast, dynamic tool GUIs without the overhead of a traditional retained-mode framework.
Who is it for?
Adopt Dear PyGui if you are a Python developer building internal tools, data dashboards, or node-based editors that need high-frequency updates and low-latency interaction, and you prefer a single pip install over a web stack. Do not use it if you need a native look-and-feel, accessibility support, or a mature widget set for end-user applications, because the immediate mode paradigm and ImGui-based widgets are oriented toward developer tools and may feel unconventional.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 125 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Dear PyGui Solves and Who It Is For

Dear PyGui addresses a specific gap: Python developers who need a GUI for a script or tool but do not want to adopt a heavyweight framework like Qt or a web-based front end. The README positions it as a way to create 'quick and powerful GUIs for scripts,' and it is built on Dear ImGui, which was originally designed for game developer tools. The target user is someone who wants to add a file browser, a plotting canvas, or a node editor to a Python utility without learning a new layout system or managing a widget hierarchy. The immediate mode paradigm means the interface is redrawn every frame, which suits applications where the data changes rapidly, such as live sensor feeds or debugging panels. It is not aimed at polished consumer apps; it is aimed at internal tools and technical interfaces where speed of development and update frequency matter more than pixel-perfect styling.

Immediate Mode Architecture and GPU Rendering

The core mechanism is immediate mode rendering, a fundamental departure from the retained mode used by most Python GUI frameworks. In retained mode, you build a widget tree and the framework manages state and redraws. Dear PyGui, following Dear ImGui, redraws the entire interface each frame, and the README states it uses 'your computer's GPU' for rendering. This design allows extremely dynamic interfaces because you can change the UI state at any time, even within a callback, without syncing a model to a view. The underlying C/C++ implementation, with bindings to Dear ImGui and its ImPlot and imnodes extensions, means the Python code is a thin layer over compiled code. The trade-off is that you must manually manage the frame loop: the example shows create_context, create_viewport, setup_dearpygui, show_viewport, and start_dearpygui calls. This is a more explicit lifecycle than a framework that hides the event loop, and it gives you control but also requires you to understand the sequence.

Getting Started: Installation and the Minimal Example

Installation is a single pip command: pip install dearpygui or pip3 install dearpygui, with a requirement of Python 3.8 64-bit. The README's example is short and self-contained. It imports dearpygui.dearpygui as dpg, creates a context, creates a viewport, and sets up the library. Then it opens a window with a text label, a button, an input text field, and a float slider. The button has a callback function that prints a message. Finally, it shows the viewport and starts the Dear PyGui loop. The key API calls are dpg.create_context(), dpg.create_viewport(), dpg.setup_dearpygui(), dpg.show_viewport(), and dpg.start_dearpygui(). The window is created using a 'with' block, which is a Python context manager that adds widgets to the window. This is a clean syntax for building a UI, and it matches the immediate mode philosophy where you define the UI in a block that re-executes each frame. The README also mentions a built-in demo that you can run with python -m dearpygui.demo, which is the fastest way to see the full widget set.

The Plotting and Node Editor Extensions

Two features stand out in the README: fast graphs and a node editor. The plotting API is built on ImPlot, and the README claims it can display over 1 million datapoints at 60 fps with zoom and pan. That is a strong claim, and it is plausible given the GPU-based rendering, but the README does not specify the hardware or the exact conditions. The node editor, built on imnodes, is a differentiator because few Python GUI frameworks offer a node graph out of the box. This makes Dear PyGui a strong candidate for tools like shader editors, dataflow programming interfaces, or visual scripting. The inclusion of these extensions in the core library means you do not need to integrate third-party widgets, which reduces dependency management. However, this also means the feature set is tied to the ImPlot and imnodes APIs, which may have their own limitations, such as specific data formats or interaction models. If your application needs complex custom plotting beyond what ImPlot provides, you might hit a ceiling.

Cross-Platform Support and Graphics API Dependencies

The README lists platform support in a table: Windows 10 with DirectX 11, macOS with Metal, Linux with OpenGL 3, and Raspberry Pi 4 with OpenGL ES. This is a concrete constraint. Each platform uses a different graphics API, which means the rendering behavior can vary. For example, DirectX 11 on Windows is a mature target, but OpenGL on Linux may have driver quirks, especially on older hardware. The Raspberry Pi support is a notable addition, but the README only mentions it in the table and does not provide details on performance or limitations. If you develop on macOS and deploy on Linux, you should test the rendering on both, because Metal and OpenGL have different capabilities and bugs. The graphics API dependency also implies that Dear PyGui cannot run in a headless environment without a display, unless you use a virtual framebuffer, which is not mentioned. For internal tools that run on a developer's desktop, this is fine, but for server-side generation of UI screenshots or automated testing, you would need a different approach.

Limitations and When It Is the Wrong Tool

The immediate mode paradigm is the main limitation. Because the UI is redrawn every frame, it is not designed for applications that need to conserve CPU or GPU resources, such as battery-constrained laptops or embedded systems. The README mentions 'asynchronous function support' as a feature, but it does not explain how it works, and the example is purely synchronous. If you have long-running tasks, you must integrate them with the frame loop, which can be tricky. Also, the widget set is derived from Dear ImGui, which is known for a utilitarian look. The README claims 'complete theme and style control,' but the default appearance is not native to any platform. For end-user software that needs to feel like a standard Windows or macOS app, this is a drawback. Accessibility is not mentioned, and ImGui-based toolkits typically have limited screen reader support. Finally, the README does not mention localization or complex text layout, so if your application needs full Unicode or right-to-left text, you should verify that support before adopting it.

Alternatives: Retained Mode Frameworks and Web-Based UIs

The most direct alternative is PyQt or PySide, which are retained mode frameworks that provide native-looking widgets, a mature layout system, and extensive documentation. They are heavier in terms of dependencies and learning curve, but they are better suited for polished applications. Another alternative is Tkinter, which is included with Python and is simpler, but it is slower and less capable for complex graphics. For a web-based approach, you could use a framework like Streamlit or Dash, which generate HTML and JavaScript and run in a browser. That approach has a different architecture: the UI is not immediate mode, and the rendering is done by the browser, which can be easier for remote access but adds a web server and network latency. The key difference is that Dear PyGui runs natively with GPU acceleration, which gives it a performance edge for real-time plotting and interaction, but it sacrifices the portability of a web UI. If your users are not on the same machine, a web UI might be more practical, despite the lower performance.

Maintenance, Upgrade Cost, and Licensing

Dear PyGui is MIT licensed, which is permissive and allows commercial use without copyleft obligations. The repository is actively maintained, with recent releases including v2.3.1 in May 2026, v2.3.0 in April 2026, and v2.2.0 in February 2026. The release cadence suggests regular updates, but the README does not include a migration guide or changelog in the provided material. Upgrading between minor versions may introduce API changes, as indicated by the version number jumps. The project is built on Dear ImGui and its extensions, which have their own release cycles, so you may be indirectly affected by upstream changes. The README mentions that development is financially supported by sponsors, which is a positive sign for long-term maintenance, but it also means that the project's continuity depends on community funding. Before adopting it, you should check the documentation for any breaking changes between versions, especially if you plan to upgrade from an older release. The demo code is inspectable, which helps you learn the API, but it does not guarantee that all features are stable.

Editorial conclusion

Adopt Dear PyGui if you are a Python developer building internal tools, data dashboards, or node-based editors that need high-frequency updates and low-latency interaction, and you prefer a single pip install over a web stack. Do not use it if you need a native look-and-feel, accessibility support, or a mature widget set for end-user applications, because the immediate mode paradigm and ImGui-based widgets are oriented toward developer tools and may feel unconventional. Before committing, verify that your target platforms (Windows 10 with DirectX 11, macOS with Metal, Linux with OpenGL 3) match the supported matrix, and test that the asynchronous function support and plotting performance meet your specific data volume needs, as the README's claim of over 1 million datapoints at 60 fps is a headline feature but not a guarantee for every use case.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes