22. GUI Development in Python

GUI (Graphical User Interface) development allows users to interact with applications using windows, buttons, menus, forms, and graphics instead of command-line text.


1. Introduction to GUI Programming

What is GUI?

GUI stands for Graphical User Interface.

Examples:

  • Calculator app
  • Text editor
  • Login form
  • Desktop software

Python provides several GUI libraries:

  • Tkinter (built-in)
  • PyQt
  • Kivy
  • wxPython

2. Tkinter Basics

What is Tkinter?

Tkinter is Python’s standard GUI library.

Features

  • Built into Python
  • Easy to learn
  • Cross-platform
  • Good for small/medium desktop apps

3. Creating First Tkinter Window

import tkinter as tk

root = tk.Tk()

root.title("My First App")
root.geometry("400x300")

root.mainloop()

Explanation

  • Tk() → creates main window
  • title() → window title
  • geometry() → window size
  • mainloop() → keeps window running

4. Tkinter Widgets

Widgets are GUI elements.

Common widgets:

  • Label
  • Button
  • Entry
  • Text
  • Checkbutton
  • Radiobutton
  • Listbox

5. Label Widget

import tkinter as tk

root = tk.Tk()

label = tk.Label(root, text="Hello Tkinter")
label.pack()

root.mainloop()

6. Button Widget

import tkinter as tk

def hello():
print("Button Clicked")

root = tk.Tk()

btn = tk.Button(root, text="Click Me", command=hello)
btn.pack()

root.mainloop()

7. Entry Widget

import tkinter as tk

def show():
print(entry.get())

root = tk.Tk()

entry = tk.Entry(root)
entry.pack()

btn = tk.Button(root, text="Submit", command=show)
btn.pack()

root.mainloop()

8. Text Widget

import tkinter as tk

root = tk.Tk()

text = tk.Text(root, height=5, width=30)
text.pack()

root.mainloop()

9. Geometry Managers

Used for arranging widgets.

pack()

label.pack()

grid()

label.grid(row=0, column=0)

place()

label.place(x=50, y=100)

10. Message Box

from tkinter import messagebox
import tkinter as tk

root = tk.Tk()

def show():
messagebox.showinfo("Info", "Welcome")

btn = tk.Button(root, text="Show", command=show)
btn.pack()

root.mainloop()

11. Frames in Tkinter

Frames group widgets together.

import tkinter as tk

root = tk.Tk()

frame = tk.Frame(root)
frame.pack()

tk.Button(frame, text="Button 1").pack(side="left")
tk.Button(frame, text="Button 2").pack(side="left")

root.mainloop()

12. Event Handling in Tkinter

Events occur when user interacts with GUI.

Examples:

  • Mouse click
  • Keyboard press
  • Window close

13. Mouse Click Event

import tkinter as tk

def clicked(event):
print("Mouse Clicked")

root = tk.Tk()

label = tk.Label(root, text="Click Here")
label.pack()

label.bind("<Button-1>", clicked)

root.mainloop()

14. Keyboard Event

import tkinter as tk

def key_pressed(event):
print("Key:", event.char)

root = tk.Tk()

root.bind("<Key>", key_pressed)

root.mainloop()

15. Menu Bar

import tkinter as tk

root = tk.Tk()

menu = tk.Menu(root)
root.config(menu=menu)

file_menu = tk.Menu(menu)
menu.add_cascade(label="File", menu=file_menu)

file_menu.add_command(label="Open")
file_menu.add_command(label="Exit", command=root.quit)

root.mainloop()

16. Simple Calculator GUI

import tkinter as tk

def calculate():
result = int(num1.get()) + int(num2.get())
output.config(text=str(result))

root = tk.Tk()

num1 = tk.Entry(root)
num1.pack()

num2 = tk.Entry(root)
num2.pack()

btn = tk.Button(root, text="Add", command=calculate)
btn.pack()

output = tk.Label(root, text="")
output.pack()

root.mainloop()

17. Introduction to PyQt

What is PyQt?

PyQt is a powerful GUI framework based on Qt.

Advantages

  • Modern UI
  • Advanced widgets
  • Professional applications
  • Better design tools

Installation

pip install PyQt5

18. First PyQt Application

import sys
from PyQt5.QtWidgets import QApplication, QWidget

app = QApplication(sys.argv)

window = QWidget()
window.setWindowTitle("PyQt App")
window.resize(400, 300)

window.show()

sys.exit(app.exec_())

19. PyQt Widgets

Common widgets:

  • QLabel
  • QPushButton
  • QLineEdit
  • QTextEdit
  • QComboBox

20. Button in PyQt

import sys
from PyQt5.QtWidgets import QApplication, QPushButton

app = QApplication(sys.argv)

button = QPushButton("Click Me")
button.show()

sys.exit(app.exec_())

21. Event Handling in PyQt

import sys
from PyQt5.QtWidgets import QApplication, QPushButton

def clicked():
print("Button clicked")

app = QApplication(sys.argv)

button = QPushButton("Click")
button.clicked.connect(clicked)

button.show()

sys.exit(app.exec_())

22. Layouts in PyQt

Layouts manage widget positions.

Types:

  • QVBoxLayout
  • QHBoxLayout
  • QGridLayout

Example:

import sys
from PyQt5.QtWidgets import (
QApplication,
QWidget,
QVBoxLayout,
QPushButton
)

app = QApplication(sys.argv)

window = QWidget()

layout = QVBoxLayout()

layout.addWidget(QPushButton("Button 1"))
layout.addWidget(QPushButton("Button 2"))

window.setLayout(layout)

window.show()

sys.exit(app.exec_())

23. Tkinter vs PyQt

FeatureTkinterPyQt
Built-inYesNo
Easy to LearnYesMedium
Modern UIBasicExcellent
PerformanceGoodVery Good
Best ForBeginnersProfessional Apps

24. Mini Projects for Practice

Beginner

  • Calculator
  • Login form
  • To-do app
  • Unit converter

Intermediate

  • Text editor
  • Music player
  • Chat application
  • Image viewer

Advanced

  • IDE/editor
  • Billing software
  • Inventory system

25. Best Practices

  • Separate GUI and logic
  • Use functions/classes
  • Validate user input
  • Keep UI simple
  • Use layouts properly

26. Summary

In this chapter you learned:

  • GUI fundamentals
  • Tkinter basics
  • Widgets and layouts
  • Event handling
  • PyQt basics
  • Building desktop applications