Our great sponsors
-
dpg-examples
A collection of example scripts which demonstrate various features/functionality in DearPyGui
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
ImHex
🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
-
EmissionControl2
EmissionControl2 (EC2) is a standalone interactive real-time application for granular synthesis and sound file granulation. It is available for OSX, Linux, and Windows.
From the faq https://github.com/ocornut/imgui/blob/master/docs/FAQ.md#q-w...
Q. What is this library called?
This library is called Dear ImGui. Please refer to it as Dear ImGui (not ImGui, not IMGUI).
(The library misleadingly started its life in 2014 as "ImGui" due to the fact that I didn't give it a proper name when I released 1.0, and had no particular expectation that it would take off. However, the term IMGUI (immediate-mode graphical user interface) was coined before and is being used in variety of other situations e.g. Unity uses it own implementation of the IMGUI paradigm. To reduce the ambiguity without affecting existing code bases, I have decided in December 2015 a fully qualified name "Dear ImGui" for this library.
I've used Dear PyGui [1], which is based on this, and it has been a mixed bag. It's fast and basic functionality is super simple. The documentation is somewhat lacking when you wanted to start doing something non-standard. I would still rate it quite highly all things considered.
[1] https://github.com/hoffstadt/DearPyGui
ImGui is brilliant. I can highly recommend this hex editor built using it: https://github.com/WerWolv/ImHex
My personal IMGUI library [1] is what I call "partially retained" in that there is an immediate mode API similar to dear imgui or nuklear on top, but under the hood the immediate mode API just manages retained mode object graphs for you automatically.
This is a fantastic (imo) way to build user interfaces, because sometimes the most convenient way to manage state or construct a complex widget is to write a retained mode object that hosts some other child objects, and in other circumstances it's most convenient to write a modal dialog or something by just slamming out some imgui code in a standalone function.
I also think the imgui approach to layout (use an algorithm that can fully reconstruct your layout from scratch every frame without much of a performance penalty) removes a lot of potential bugs and quirks that are common in UI, like one-frame glitches or having to manually propagate state through a bunch of objects and layers. Though imgui approaches have their own downsides, like the "page tearing" issue. I've had to do some weird contortions to solve that one in my own code and I still get bugs occasionally.
1: https://github.com/sq/Libraries/tree/master/Squared/PRGUI
In school, another student and I used ImGui for a music sampler. In retrospect it could have a more friendly interface heh.
https://github.com/EmissionControl2/EmissionControl2
Good Testing/Automation is never free lunch AFAIK but Dear ImGui has a testing/automation system: https://github.com/ocornut/imgui_test_engine