Dear ImGui Bundle includes a variety of additional widgets beyond the standard ImGui set.
Full Demo¶

Widgets demo showcasing knobs, toggles, spinners, coolbar, and more.
Try online | Python | C++
imgui-knobs - Rotary Knobs¶
Introduction¶
imgui-knobs adds rotary knob widgets similar to those found in audio software.

imgui-knobs: rotary knobs with multiple visual styles.
Knob variants: tick, dot, wiper, wiper_only, stepped
Quick Example¶
from imgui_bundle import imgui_knobs, immapp
value = 50.0
def gui():
global value
changed, value = imgui_knobs.knob("Volume", value, 0.0, 100.0)
immapp.run(gui)#include "immapp/immapp.h"
#include "imgui-knobs/imgui-knobs.h"
float value = 50.0f;
void gui() {
ImGuiKnobs::Knob("Volume", &value, 0.0f, 100.0f);
}
int main() {
ImmApp::Run(gui, "Knobs Demo", {400, 300});
return 0;
}Documented APIs¶
Python: imgui_knobs.pyi
C++: imgui-knobs.h
imgui_toggle - Toggle Switches¶
Introduction¶
imgui_toggle provides iOS-style toggle switches.

imgui_toggle: iOS-style toggle switches with animations.
Quick Example¶
from imgui_bundle import imgui_toggle, immapp
enabled = False
def gui():
global enabled
changed, enabled = imgui_toggle.toggle("Enable feature", enabled)
immapp.run(gui)#include "immapp/immapp.h"
#include "imgui_toggle/imgui_toggle.h"
bool enabled = false;
void gui() {
ImGui::Toggle("Enable feature", &enabled);
}
int main() {
ImmApp::Run(gui, "Toggle Demo", {400, 300});
return 0;
}Documented APIs¶
Python: imgui_toggle.pyi
C++: imgui_toggle.h
imspinner - Loading Spinners¶
Introduction¶
imspinner provides a large collection of animated loading spinners.
Quick Example¶
from imgui_bundle import imspinner, imgui, immapp
def gui():
imspinner.spinner_ang_triple(
"spinner",
radius1=16, radius2=13, radius3=10,
thickness=3,
c1=imgui.ImColor(255, 255, 255),
c2=imgui.ImColor(255, 100, 100),
c3=imgui.ImColor(100, 100, 255)
)
immapp.run(gui)#include "immapp/immapp.h"
#include "imspinner/imspinner.h"
void gui() {
ImSpinner::SpinnerAngTriple(
"spinner",
16, 13, 10, // radii
3, // thickness
ImColor(255, 255, 255),
ImColor(255, 100, 100),
ImColor(100, 100, 255)
);
}
int main() {
ImmApp::Run(gui, "Spinner Demo", {400, 300});
return 0;
}Documented APIs¶
Python: imspinner.pyi
C++: imspinner.h
ImCoolBar - macOS-style Dock Bar¶
Introduction¶
ImCoolBar creates a macOS-style dock bar with magnification effect on hover.

ImCoolBar: macOS-style dock bar with magnification effect.
Documented APIs¶
Python: im_cool_bar.pyi
C++: ImCoolbar.h
imgui-command-palette - VSCode-style Command Palette¶
Introduction¶
imgui

imgui-command-palette: VSCode-style command palette.
Full Demo¶
Try online | Python | C++
Documented APIs¶
Python: imgui
_command _palette .pyi
File Dialogs¶
Dear ImGui Bundle provides two file dialog libraries.
portable-file-dialogs¶
portable

portable-file-dialogs: native OS dialogs on all platforms.
Quick Example¶
from imgui_bundle import portable_file_dialogs as pfd
# Open file dialog (native OS)
selection = pfd.open_file("Select a file", ".", ["Image Files", "*.png *.jpg"])
# Message box
pfd.message("Title", "Message content", pfd.choice.ok, pfd.icon.info)#include "portable-file-dialogs/portable-file-dialogs.h"
// Open file dialog (native OS)
auto selection = pfd::open_file("Select a file", ".",
{"Image Files", "*.png *.jpg"}).result();
// Message box
pfd::message("Title", "Message content", pfd::choice::ok, pfd::icon::info);Documented APIs¶
Python: portable
_file _dialogs .pyi
ImFileDialog¶
ImFileDialog is a file dialog library with a modern look.

ImFileDialog: modern file dialog with preview support.
Quick Example¶
from imgui_bundle import im_file_dialog as ifd, imgui, immapp
def gui():
if imgui.button("Open File"):
ifd.FileDialog.instance().open(
"OpenFile", "Open a file", "Image files (*.png;*.jpg){.png,.jpg},.*"
)
if ifd.FileDialog.instance().is_done("OpenFile"):
if ifd.FileDialog.instance().has_result():
result = ifd.FileDialog.instance().get_result()
print(f"Selected: {result}")
ifd.FileDialog.instance().close()
immapp.run(gui)#include "immapp/immapp.h"
#include "ImFileDialog/ImFileDialog.h"
void gui() {
if (ImGui::Button("Open File")) {
ifd::FileDialog::Instance().Open(
"OpenFile", "Open a file", "Image files (*.png;*.jpg){.png,.jpg},.*"
);
}
if (ifd::FileDialog::Instance().IsDone("OpenFile")) {
if (ifd::FileDialog::Instance().HasResult()) {
auto result = ifd::FileDialog::Instance().GetResult();
printf("Selected: %s\n", result.string().c_str());
}
ifd::FileDialog::Instance().Close();
}
}
int main() {
ImmApp::Run(gui, "File Dialog", {800, 600});
return 0;
}Documented APIs¶
Python: im_file_dialog.pyi
C++: ImFileDialog.h