https://github.com/pyimgui/pyimgui
Cython-based Python bindings for dear imgui
https://github.com/pyimgui/pyimgui
cython dear-imgui gamedev opengl python python-bindings
Last synced: 3 months ago
JSON representation
Cython-based Python bindings for dear imgui
- Host: GitHub
- URL: https://github.com/pyimgui/pyimgui
- Owner: pyimgui
- License: bsd-3-clause
- Created: 2016-10-01T16:42:24.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2025-03-23T08:15:38.000Z (7 months ago)
- Last Synced: 2025-07-04T23:03:41.915Z (3 months ago)
- Topics: cython, dear-imgui, gamedev, opengl, python, python-bindings
- Language: Cython
- Homepage: https://pyimgui.readthedocs.io
- Size: 1.53 MB
- Stars: 1,450
- Watchers: 28
- Forks: 186
- Open Issues: 117
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/pyimgui/pyimgui)
[](https://pyimgui.readthedocs.io/en/latest/?badge=latest)
[](https://ci.appveyor.com/project/KinoxKlark/pyimgui/branch/master)# pyimgui
Python bindings for the amazing
[dear imgui](https://github.com/ocornut/imgui) C++ library - a Bloat-free
Immediate Mode Graphical User Interface.Documentation: [pyimgui.readthedocs.io](https://pyimgui.readthedocs.io/en/latest/)
> **Notes for contributions:**
> - We have a [`fixes`](https://github.com/pyimgui/pyimgui/tree/fixes) branch
> - Please, read the last section of this file# Installation
**pyimgui** is available on PyPI so you can easily install it with `pip`:
pip install imgui[full]Above command will install `imgui` package with additional dependencies for all
built-in rendering backend integrations (pygame, cocos2d, etc.). If you don't
want to install all additional dependencies you can always use bare
`pip install imgui` command or select a specific set of extra requirements:* for pygame backend use `pip install imgui[pygame]`
* for GLFW3 backend use `pip install imgui[glfw]`
* for SDL2 backend use `pip install imgui[sdl2]`
* for Cocos2d backend use `pip install imgui[cocos2d]`
* for pyglet backend use `pip install imgui[pyglet]`Package is distributed in form of *built wheels* so it does not require
compilation on most operating systems. For more details about compatibility
with diffferent OSes and Python versions see the *Project ditribution*
section of this documentation page.# Project status
The Python `imgui` package supports most core Dear ImGui widgets and functionalities. It is based on Dear ImGui version 1.82 (released on March 15, 2021). Some lower-level API elements and complex widgets (such as plots) are not fully integrated.
Work was initiated to add support for the [Docking](https://github.com/ocornut/imgui/wiki/Docking) branch of ImGui (see related [issue](https://github.com/pyimgui/pyimgui/issues/259) and [branch](https://github.com/pyimgui/pyimgui/tree/docking)). However, maintaining pace with ImGui’s latest updates has proven challenging, as these bindings are written manually.
pyimgui remains a solid choice for building immediate mode UIs. However, for those who require the latest Dear ImGui features (like docking or new widgets), alternative bindings may provide more up-to-date support.
#### Autogenerated bindings:
These bindings ensure closer alignment with the latest ImGui features without the manual overhead.- **[Dear ImGui Bundle](https://pthom.github.io/imgui_bundle/)** ([Online Demo](https://traineq.org/ImGuiBundle/emscripten/bin/demo_imgui_bundle.html)):
A comprehensive collection of ready-to-use widgets and libraries, including ImGui, ImPlot, ImGuizmo, ImGui Node Editor, and more. It offers autogenerated Python bindings closely following the ImGui API (as well as pyimgui's API). These bindings are kept more up-to-date, currently based on Dear ImGui v1.90.9 (as of September 2024).- **[deargui](https://github.com/cammm/deargui)**:
Another set of autogenerated bindings. However, the project has not been updated since 2018.#### Other alternatives:
- **[Dear PyGui](https://github.com/hoffstadt/DearPyGui)**:
A widely-used set of bindings that include Dear ImGui, ImPlot, and imnode. However, it exhibits a retained mode API,
unlike the immediate mode API of Dear ImGui and pyimgui. The bindings are based on Dear ImGui v1.83, however, the project is actively maintained.Note: Future versions may move away from Dear ImGui altogether (see [What's going on?](https://github.com/hoffstadt/DearPyGui/wiki/What's-going-on%3F)).
- **[dear_bindings](https://github.com/dearimgui/dear_bindings)**:
A tool that generates metadata from Dear ImGui’s header, useful for developers looking to create bindings for languages for Python and other languages.- **[slimgui](https://nurpax.github.io/slimgui/)**:
A modern set of Python bindings for Dear ImGui, designed with IDE-friendliness and Pythonic clarity in mind. `slimgui` closely follows the Dear ImGui API, while adapting idioms where appropriate without introducing new API concepts. It includes `.pyi` type hinting files to provide auto-completion, inline documentation, and type checking in modern Python editors. The current backend integration is built with `glfw` and `pyOpenGL`, but the architecture allows for other backends like SDL or Pygame to be added. The project is actively maintained and hosted at [github.com/nurpax/slimgui](https://github.com/nurpax/slimgui).# Project distribution
This project has a working build pipeline on Appveyor. It builds
succesfully for all major operating systems with different architectures:* Windows (32bit & 64bit)
* Linux (32bit & 64bit)
* OS X (universal build)Right now we are ready shipping the built wheels for these three systems
(even for Linux using `manylinux1` wheels). The build pipeline covers multiple
Python versions:* py36
* py37, pp37
* py38, pp38
* py39, pp39
* py310
* py311__Note:__ We dropped support for py27, py33, py34, and py35 starting from release 2.0.
Those were supported until release [1.4.0](https://github.com/pyimgui/pyimgui/releases/tag/1.4.0).
Pypy is only supported since release 2.0.If none of these wheels work in your environment you can install the `imgui`
package by compiling it directly from sdist distribution using one of following
commands:# will install Cython as extra dependency and compile from Cython sources
pip install imgui[Cython] --no-binary imgui# will compile from pre-generated C++ sources
pip install imgui --no-binary imgui**pyimgui** provides documentation with multiple visual examples.
Thanks to custom Sphinx extensions, we are able to render GUI examples off-screen directly from docstring
snippets. These examples work also as automated functional tests. Documentation is hosted on
[pyimgui.readthedocs.io](https://pyimgui.readthedocs.io/en/latest/index.html).# Contributing
Contributions are welcomed. If you want to help us by fixing bugs, mapping functions, or adding new features,
please feel free to do so and propose a pull request.Development tips and information for developers are given in [HACKING.md](https://github.com/pyimgui/pyimgui/blob/master/HACKING.md).