Skip to main content

The ultimate modern UI toolkit for Python - beautiful, customizable widgets with advanced features

Project description

๐Ÿš€ BetterTkinter

Python PyPI Stars Downloads License

๐ŸŽจ A modern, beautiful, and feature-rich Tkinter UI framework for Python

Transform your Python desktop applications with stunning modern interfaces, advanced widgets, and effortless theming.


โœจ Why BetterTkinter?

BetterTkinter revolutionizes Python GUI development by providing a modern, intuitive framework built on Tkinter's solid foundation. Create professional-grade desktop applications with minimal code and maximum visual impact.

๐ŸŽฏ Key Highlights

๐ŸŒŸ Feature ๐ŸŽจ Description
Modern Design Beautiful, contemporary widgets that look native on all platforms
Smart Theming Light/Dark/Auto themes with customizable color schemes
Advanced Widgets Color pickers, dialogs, navigation bars, progress bars, and more
Developer Friendly Intuitive API, comprehensive documentation, rich examples
Production Ready Robust, tested, and used in real-world applications
Cross Platform Windows, macOS, and Linux support out of the box

๐Ÿ“ฆ Installation

Quick Install

pip install bettertkinter

Development Install

git clone https://github.com/Velyzo/BetterTkinter.git
cd BetterTkinter
pip install -e .

๐Ÿ’ก Tip: Use a virtual environment for better dependency management. See our Installation Guide for detailed instructions.


๐Ÿš€ Quick Start

Get up and running in under 2 minutes:

from bettertkinter import BTk, BTkButton, BTkFrame, BTkLabel

# Create a modern window
app = BTk(title="๐ŸŽจ My Beautiful App", theme="dark", geometry="500x350")

# Add a stylish frame
frame = BTkFrame(app, corner_radius=15)
frame.pack(fill="both", expand=True, padx=20, pady=20)

# Beautiful label
BTkLabel(frame, text="Welcome to BetterTkinter! ๐Ÿš€", 
         font_size=18).pack(pady=20)

# Modern buttons with different styles
BTkButton(frame, text="Primary Action", style="primary").pack(pady=5)
BTkButton(frame, text="Success Action", style="success").pack(pady=5)
BTkButton(frame, text="Warning Action", style="warning").pack(pady=5)

app.mainloop()

That's it! You now have a beautiful, modern GUI application.


๐ŸŽฎ Examples & Demos

๐Ÿ”ฅ Try the Interactive Demo

Experience BetterTkinter's full power with our comprehensive demo:

# Run the main demo
python demo.py

# Or explore the demo folder
cd demo/
python advanced_demo.py

๐Ÿ“‚ Demo Directory

Our demo/ folder contains:

  • Complete Applications - Full-featured apps showcasing real-world usage
  • Component Demos - Individual widget demonstrations
  • Theme Showcases - Different styling approaches
  • Integration Examples - Working with databases, APIs, and more

๐Ÿ’ก Code Examples

Quick examples for common tasks:

๐Ÿ“ Form with Validation
from bettertkinter import BTk, BTkFrame, BTkLabel, BTkEntry, BTkButton, BTkDialog

class LoginForm(BTk):
    def __init__(self):
        super().__init__(title="Login", geometry="400x300", theme="light")
        
        frame = BTkFrame(self)
        frame.pack(fill="both", expand=True, padx=30, pady=30)
        
        BTkLabel(frame, text="๐Ÿ” Login", font_size=20).pack(pady=20)
        
        self.username = BTkEntry(frame, placeholder_text="Username")
        self.username.pack(fill="x", pady=10)
        
        self.password = BTkEntry(frame, placeholder_text="Password", show="*")
        self.password.pack(fill="x", pady=10)
        
        BTkButton(frame, text="Login", style="primary", 
                 command=self.login).pack(pady=20, fill="x")
    
    def login(self):
        if self.username.get() and self.password.get():
            BTkDialog.show_success("Success", "Welcome back!")
        else:
            BTkDialog.show_error("Error", "Please fill all fields")

LoginForm().mainloop()
๐ŸŽจ Color Picker App
from bettertkinter import BTk, BTkColorPicker, BTkLabel, BTkFrame

class ColorApp(BTk):
    def __init__(self):
        super().__init__(title="Color Studio", geometry="600x500")
        
        frame = BTkFrame(self)
        frame.pack(fill="both", expand=True, padx=20, pady=20)
        
        BTkLabel(frame, text="๐ŸŽจ Color Picker Studio", font_size=18).pack(pady=10)
        
        self.color_picker = BTkColorPicker(frame, width=400, height=300)
        self.color_picker.pack(pady=20)
        
        self.color_label = BTkLabel(frame, text="Selected: #FF6B35", font_size=14)
        self.color_label.pack(pady=10)
        
        self.color_picker.bind_color_change(self.on_color_change)
    
    def on_color_change(self, color):
        self.color_label.configure(text=f"Selected: {color}")

ColorApp().mainloop()
๐Ÿ“Š Dashboard Example
from bettertkinter import BTk, BTkFrame, BTkLabel, BTkProgressBar, BTkNavBar

class Dashboard(BTk):
    def __init__(self):
        super().__init__(title="Analytics Dashboard", geometry="800x600", theme="dark")
        
        # Navigation
        nav = BTkNavBar(self, items=["Overview", "Analytics", "Settings"])
        nav.pack(fill="x", padx=10, pady=10)
        
        # Content frame
        content = BTkFrame(self)
        content.pack(fill="both", expand=True, padx=20, pady=20)
        
        # Metrics
        BTkLabel(content, text="๐Ÿ“ˆ Key Metrics", font_size=16).pack(pady=10)
        
        metrics_frame = BTkFrame(content)
        metrics_frame.pack(fill="x", pady=10)
        
        # Progress indicators
        for metric, value in [("Revenue", 85), ("Users", 92), ("Growth", 78)]:
            metric_frame = BTkFrame(metrics_frame)
            metric_frame.pack(side="left", fill="both", expand=True, padx=5)
            
            BTkLabel(metric_frame, text=metric).pack(pady=5)
            progress = BTkProgressBar(metric_frame)
            progress.set_value(value)
            progress.pack(fill="x", padx=10, pady=5)
            BTkLabel(metric_frame, text=f"{value}%").pack()

Dashboard().mainloop()

๐Ÿงฉ Component Library

BetterTkinter provides a comprehensive set of modern widgets:

๐ŸชŸ
BTk
Main Window
๐Ÿ”ณ
BTkButton
Modern Buttons
๐Ÿ–ผ๏ธ
BTkFrame
Containers
๐Ÿท๏ธ
BTkLabel
Text Display
๐Ÿ“
BTkEntry
Input Fields
๐Ÿ’ฌ
BTkDialog
Message Boxes
๐ŸŽจ
BTkColorPicker
Color Selection
โ˜‘๏ธ
BTkCheckBox
Checkboxes
๐Ÿ“Š
BTkProgressBar
Progress Indicators
๐Ÿงญ
BTkNavBar
Navigation
๐ŸŽš๏ธ
BTkSlider
Range Input
๐Ÿ–Œ๏ธ
BTkCanvas
Drawing Surface

๐Ÿ“– Full Component Reference: Component Documentation


๐Ÿ“š Documentation & Resources

๐ŸŒ Complete Documentation Website

๐Ÿ“– velyzo.github.io/BetterTkinterDocs

Our comprehensive documentation includes:

  • ๐Ÿ“˜ Getting Started Guide - Step-by-step tutorials
  • ๐Ÿงฉ Component Reference - Detailed API documentation
  • ๐Ÿ’ก Examples Collection - Real-world code samples
  • ๐ŸŽจ Theming Guide - Customization and styling
  • ๐Ÿš€ Deployment Guide - Packaging and distribution

๐Ÿ“ Local Documentation


๐Ÿค Community & Support

GitHub Discussions Issues Documentation

๐Ÿ’ช Contributing

We welcome contributions! Here's how you can help:

  • ๐Ÿ› Report bugs and request features
  • ๐Ÿ“ Improve documentation and examples
  • ๐Ÿ”ง Submit pull requests with enhancements
  • ๐Ÿ’ฌ Help others in discussions
  • โญ Star the repository to show your support

See our Contributing Guide for detailed guidelines.


๐Ÿ† Showcase

BetterTkinter powers a variety of applications:

  • ๐Ÿ–ฅ๏ธ Desktop Applications - Business tools, utilities, games
  • ๐Ÿ”ง Development Tools - IDEs, file managers, system monitors
  • ๐ŸŽจ Creative Software - Image editors, drawing apps, design tools
  • ๐Ÿ“Š Data Applications - Dashboards, analytics, visualization tools

๐Ÿ“ธ Share Your Creation: Built something amazing? Share it with us!


๐Ÿ“œ License

BetterTkinter is released under the MIT License. See LICENSE for details.

MIT License - Feel free to use BetterTkinter in personal and commercial projects!

โญ Star History

Star History Chart


๐Ÿš€ Ready to Build Something Amazing?

๐Ÿ“– Read the Docs โ€ข ๐ŸŽฎ Try the Demo โ€ข โญ Star the Repo


Made with โค๏ธ by the BetterTkinter Team

Follow on GitHub

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bettertkinter-2.0.1.tar.gz (32.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bettertkinter-2.0.1-py3-none-any.whl (41.0 kB view details)

Uploaded Python 3

File details

Details for the file bettertkinter-2.0.1.tar.gz.

File metadata

  • Download URL: bettertkinter-2.0.1.tar.gz
  • Upload date:
  • Size: 32.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for bettertkinter-2.0.1.tar.gz
Algorithm Hash digest
SHA256 4c1655293523892cf9c09345f922d3f7b2592f988505a7dc62f4d6ee8ab8fc76
MD5 bd6b620225be764a061cacaf66b8d849
BLAKE2b-256 04d5b0a733669c2b84e7d91cc43744e0de0b9355ba1956d4399311ef336a335b

See more details on using hashes here.

File details

Details for the file bettertkinter-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: bettertkinter-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 41.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for bettertkinter-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4f97aade96664688ba686faddce074d82392c8a3ce77ea57f710d7af01fadfa9
MD5 f7f4aa4edf8fb1dcfcac56aac5cf7003
BLAKE2b-256 a926b602e3f8c0a457f77cbde76fe25557ad0e92f80ed0680e92bd315eef6162

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page