Tkinter Fundamentals
Tkinter is Python's built-in GUI library. Create windows,
buttons, forms, menus, and dialogs that work on Windows, Mac, and Linux.
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
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
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