๐Ÿ–ฅ๏ธ

Tkinter GUI

Build desktop applications

INTERMEDIATE

Tkinter GUI Development

Create professional desktop applications with buttons, forms, menus, and cross-platform windows. No external dependencies - pure Python power.

Tkinter Fundamentals

Tkinter is Python's built-in GUI library. Create windows, buttons, forms, menus, and dialogs that work on Windows, Mac, and Linux.

Widget Code Purpose
Window root = tk.Tk() Main application window
Button tk.Button() Clickable actions
Label tk.Label() Display text
Entry tk.Entry() Text input fields
Frame tk.Frame() Layout containers

Hello World GUI

๐Ÿ“ฑ Window Preview:
Hello, Tkinter!
import tkinter as tk # Create main window root = tk.Tk() root.title("My First GUI") root.geometry("400x300") root.configure(bg="#2b2b2b") # Add label label = tk.Label( root, text="Hello, Tkinter!", font=("Arial", 20, "bold"), bg="#2b2b2b", fg="#e5e7eb" ) label.pack(pady=50) # Add button def on_click(): label.config(text="Button clicked!") button = tk.Button( root, text="Click Me!", command=on_click, bg="#10B981", fg="white", font=("Arial", 14, "bold"), padx=20, pady=10, cursor="hand2" ) button.pack(pady=20) # Start GUI loop root.mainloop()

Layout Managers

pack() - Simple Stacking

label.pack(pady=10) button.pack(pady=10) entry.pack(pady=10) # Stacks vertically โœ“

grid() - Table Layout

label.grid(row=0, column=0, pady=10) button.grid(row=1, column=0, pady=10) entry.grid(row=0, column=1, padx=10) # Spreadsheet layout โœ“

place() - Absolute Positioning

button.place(x=50, y=100, width=200, height=40) # Pixel-perfect control

Forms & Input

๐Ÿ“ Login Form Preview:
Username:
Password:
def login(): username = entry_user.get() password = entry_pass.get() if username and password: label_status.config(text=f"Welcome, {username}!") else: label_status.config(text="Please fill all fields") root = tk.Tk() root.title("Login Form") root.geometry("400x300") tk.Label(root, text="Username:").grid(row=0, column=0, padx=10, pady=10) entry_user = tk.Entry(root) entry_user.grid(row=0, column=1, padx=10, pady=10) tk.Label(root, text="Password:", show="*").grid(row=1, column=0, padx=10, pady=10) entry_pass = tk.Entry(root, show="*") entry_pass.grid(row=1, column=1, padx=10, pady=10) tk.Button(root, text="Login", command=login, bg="#A855F7").grid(row=2, column=1, pady=20) label_status = tk.Label(root, text="", fg="#10B981") label_status.grid(row=3, column=0, columnspan=2) root.mainloop()

Event Handling

Button Callbacks

def button_click(): counter[0] += 1 button.config(text=f"Clicked {counter[0]} times") counter = [0] button = tk.Button(root, text="Click Me", command=button_click)

Keyboard & Mouse Events

def on_keypress(event): print(f"Key pressed: {event.char}") def on_mouse_click(event): print(f"Clicked at: ({event.x}, {event.y})") entry.bind("", on_keypress) canvas.bind("", on_mouse_click)

Checkbuttons & Radiobuttons

toppings = tk.IntVar() cheese = tk.IntVar() tk.Checkbutton(root, text="Cheese", variable=cheese).pack() tk.Checkbutton(root, text="Pepperoni", variable=toppings).pack() def order(): if cheese.get(): print("Add cheese") print(f"{toppings.get()} pepperonis")

Complete Applications

Unit Converter App

๐Ÿ”„ Converter Preview:
212.0 ยฐF
import tkinter as tk from tkinter import ttk def convert_temp(): try: celsius = float(entry.get()) fahrenheit = (celsius * 9/5) + 32 result_label.config(text=f"{fahrenheit:.1f}ยฐF") except ValueError: result_label.config(text="Invalid input") root = tk.Tk() root.title("Temperature Converter") root.geometry("350x250") root.resizable(False, False) ttk.Label(root, text="Celsius:").pack(pady=20) entry = ttk.Entry(root, font=("Arial", 14), justify="center") entry.pack(pady=10) entry.insert(0, "0") ttk.Button(root, text="Convert", command=convert_temp).pack(pady=10) result_label = ttk.Label(root, text="32.0ยฐF", font=("Arial", 18, "bold")) result_label.pack(pady=20) root.mainloop()

Menus & Dialogs

File Menu

menubar = tk.Menu(root) root.config(menu=menubar) file_menu = tk.Menu(menubar, tearoff=0) menubar.add_cascade(label="File", menu=file_menu) file_menu.add_command(label="New", command=new_file) file_menu.add_command(label="Open", command=open_file) file_menu.add_separator() file_menu.add_command(label="Exit", command=root.quit)

Message Boxes

from tkinter import messagebox def show_alert(): messagebox.showinfo("Success", "Operation completed!") messagebox.showerror("Error", "Something went wrong!") result = messagebox.askyesno("Confirm", "Save changes?") if result: print("User clicked Yes")

Production GUI Projects

1. Calculator App

Complete calculator with +, -, ร—, รท, clear, equals buttons

2. Todo List Desktop

Add/delete tasks, save to file, mark complete, search

3. Image Viewer

File browser, zoom, rotate, slideshow, thumbnails

4. System Monitor

CPU/Memory usage, real-time graphs, alerts, logging

Desktop App Developer!

๐Ÿ–ฅ๏ธ Professional Applications:

๐Ÿ“ฑ System Utilities
Monitors, converters, tools
๐Ÿ“Š Data Entry Apps
Forms, CRUD operations
๐ŸŽฎ Simple Games
Tic-tac-toe, memory, puzzles
๐Ÿ“ˆ Dashboards
Charts, real-time data
โš™๏ธ Config Tools
Settings editors, wizards

Build cross-platform desktop apps with pure Python!
Next: Packaging โ†’ Deployment โ†’ Advanced Topics