Skip to content

Velyzo/BetterTkinter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

46 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ 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