vibeUI
vibeUI is a beginner-friendly, professional Python GUI library built on top of Tkinter.
It lets you build clean, modern-looking desktop apps with a handful of lines of code —
no manual pixel positioning, no wrestling with StringVars, no theming headaches.
v2.0.0 is a from-the-ground-up rewrite. See CHANGELOG.md for what changed and why — the short version: a real layout system, a proper theming engine, way more widgets, and a much nicer developer experience.
Features
- Automatic layout — widgets stack top-to-bottom by default; use
with win.row():to go left-to-right,with win.card():to group things visually. Nopos=(x, y)math. - Theming — built-in
light,dark, andoceanthemes, plus a customaccentcolor. Buttons get real hover/press states out of the box. - A much bigger widget set — labels, buttons (4 variants), text inputs (with real placeholders), text areas, checkboxes, radio groups, sliders, dropdowns, listboxes, progress bars, images, tabs, menus, and a status bar.
- Consistent widget API — every interactive widget returns a small wrapper with
.get()/.set()(and.on_change(callback)where it makes sense) instead of raw Tkinter variables. - Dialogs —
alert,confirm,prompt,choose_file,choose_folder,save_file,pick_color, and a non-blockingtoast(...)notification. - Cross-platform — Windows, macOS, Linux (anywhere Tkinter runs).
Installation
pip install vibeUI
Optional, for resizable images (add_image(..., width=..., height=...)):
pip install vibeUI[images]
Quick Start
import vibe as vi
win = vi.Window("Vibe Demo", size=(500, 400), theme="dark", accent="#7c6cf5")
win.add_label("Hello, Vibe!", size="xl", bold=True)
name = win.add_input("Enter your name")
def greet():
vi.alert(f"Hello {name.get() or 'friend'}!", title="Greeting")
win.add_button("Greet Me", on_click=greet)
win.run()
Run the full feature tour:
python examples/demo.py
Layout in v2
v1 used absolute positioning (pos=(x, y)). v2 uses a simple flow layout instead —
it's a deliberate breaking change that makes apps look right on every screen size
without any manual math.
win = vi.Window("Layout demo")
win.add_label("Stacks vertically by default")
with win.row(): # left-to-right group
win.add_button("Yes")
win.add_button("No")
with win.card(title="Settings"): # bordered, visually grouped section
win.add_checkbox("Enable notifications")
win.add_slider("Volume", 0, 100, default=60)
win.run()
Widget reference (short version)
| Method | Returns | Notes |
|---|---|---|
add_label(text, size, bold, color) |
— | size: sm/md/lg/xl |
add_button(text, on_click, variant, size) |
— | variant: primary/secondary/danger/ghost |
add_input(placeholder, password, on_change) |
TextInput |
.get() / .set() / .clear() |
add_textarea(rows, placeholder) |
TextArea |
.get() / .set() / .clear() |
add_checkbox(text, checked, on_change) |
Toggle |
.get() / .set() bool |
add_radio_group(options, default, on_change) |
RadioGroup |
.get() / .set() |
add_slider(label, min_val, max_val, default, on_change) |
Slider |
.get() / .set() |
add_dropdown(options, default, on_change) |
Dropdown |
.get() / .set() |
add_listbox(items, multiple) |
ListBox |
.get_selected() |
add_progressbar(value, max_val) |
ProgressBar |
.set(value) |
add_image(path, width, height) |
— | resizing needs Pillow |
tabs(names) |
TabGroup |
with tabs.tab("Name"): |
set_menu({...}) |
— | nested dict → menu bar |
add_status_bar(text) |
Label | .set(text) |
Dialogs: vi.alert(), vi.confirm(), vi.prompt(), vi.choose_file(),
vi.choose_folder(), vi.save_file(), vi.pick_color(), vi.toast().
License
vibeUI is released under the MIT License.
Author
Created and maintained by Samarth Chugh (@Sam3360).
Metadata
Release files for vibeUI 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vibeui-2.0.0.tar.gz | 14.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vibeui-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.5 kB
Release files / vibeui-2.0.0.tar.gz
| Download URL | vibeui-2.0.0.tar.gz |
|---|---|
| Size | 14.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e0ff5cecfcd1cf9155b90bcc1de4852802a554e3570f394f2b11a6c330fd9e28
|
|
BLAKE2b-256 checksum How to use checksums |
96a62a71e0018a5a76984612946f1ba4b3b5d1ba4d4211e79a56000eab7ba64f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.2
|
Release files / vibeui-2.0.0-py3-none-any.whl
| Download URL | vibeui-2.0.0-py3-none-any.whl |
|---|---|
| Size | 13.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
942ca653a615491b7aa14fd5ac8701b0c78811580d74ee8b8330b32cf7bd4ed9
|
|
BLAKE2b-256 checksum How to use checksums |
6b29b3e072c2c2a2d51d3a15a2b64dc05a54ee99e8ccca3d8094e4870d511770
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.2
|