Skip to main content

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. No pos=(x, y) math.
  • Theming — built-in light, dark, and ocean themes, plus a custom accent color. 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-blocking toast(...) 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)

Source distribution for vibeUI 2.0.0
File Size Uploaded
vibeui-2.0.0.tar.gz 14.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vibeUI 2.0.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

3.0.0

2 release files

This release

2.0.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page