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 windowtitle()→ window titlegeometry()→ window sizemainloop()→ 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
| Feature | Tkinter | PyQt |
|---|---|---|
| Built-in | Yes | No |
| Easy to Learn | Yes | Medium |
| Modern UI | Basic | Excellent |
| Performance | Good | Very Good |
| Best For | Beginners | Professional 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






