Lập Trình Giao Diện Với Python Tkinter
Hệ thống bài giảng từ cơ bản đến ứng dụng thực tế (12 Ví dụ)
Mục lục nội dung
- VD1: Cửa sổ đầu tiên
- VD2: Nhãn (Label) & Màu sắc
- VD3: Nút bấm (Button)
- VD4: Ô nhập liệu (Entry)
- VD5: Máy tính cộng số
- VD6: Quản lý Layout với Grid
- VD7: Ô chọn (Checkbutton)
- VD8: Nút chọn (Radiobutton)
- VD9: Hộp thoại (Messagebox)
- VD10: Thanh cuộn & Text
- VD11: Vẽ đồ họa (Canvas)
- VD12: Đồng hồ kỹ thuật số
Kiến thức trọng tâm
Tkinter là thư viện chuẩn của Python dùng để tạo GUI. Để xây dựng một ứng dụng, chúng ta luôn đi theo trình tự: Khởi tạo -> Thêm Widget -> Bố trí -> Xử lý sự kiện.
Hệ thống ví dụ thực hành
Ví dụ 1: Cấu trúc khởi tạo CƠ BẢN
Python
import tkinter as tk
root = tk.Tk()
root.title("Xin chào Tkinter")
root.geometry("300x200")
root.mainloop()
tk.Tk(): Tạo ra cửa sổ "cha" (root).geometry("WxH"): Định nghĩa kích thước cửa sổ.mainloop(): Giữ cửa sổ luôn hiển thị.
Ví dụ 2: Hiển thị Label & Định dạng
Python
import tkinter as tk
root = tk.Tk()
lbl = tk.Label(root, text="Học Python tại Phan Chu Trinh", fg="blue", font=("Arial", 14, "bold"))
lbl.pack(pady=20)
root.mainloop()
fg: Màu chữ (Foreground).font: Định dạng phông chữ, cỡ chữ, kiểu chữ.pack(pady=20): Đặt widget vào cửa sổ và tạo khoảng cách trên-dưới 20px.
Ví dụ 5: Máy tính cộng số (Xử lý sự kiện)
Python
import tkinter as tk
def tinh():
n1 = int(e1.get())
n2 = int(e2.get())
kq.config(text=f"Tổng là: {n1 + n2}")
root = tk.Tk()
e1 = tk.Entry(root); e1.pack()
e2 = tk.Entry(root); e2.pack()
btn = tk.Button(root, text="Cộng", command=tinh); btn.pack()
kq = tk.Label(root, text="Kết quả"); kq.pack()
root.mainloop()
e1.get(): Lấy giá trị từ ô nhập liệu (luôn là chuỗi).config(): Thay đổi thuộc tính (ở đây là thay đổi văn bản kết quả) của widget khi chương trình đang chạy.
Ví dụ 9: Hộp thoại thông báo (Messagebox)
Python
import tkinter as tk
from tkinter import messagebox
def thong_bao():
messagebox.showinfo("Thông báo", "Bạn đã lưu dữ liệu thành công!")
root = tk.Tk()
tk.Button(root, text="Lưu", command=thong_bao).pack(pady=50)
root.mainloop()
messagebox.showinfo(tiêu đề, nội dung): Hiển thị cửa sổ pop-up thông báo.
Ví dụ 11: Vẽ đồ họa (Canvas) NÂNG CAO
Python
import tkinter as tk
root = tk.Tk()
cv = tk.Canvas(root, width=200, height=200, bg="white")
cv.pack()
# Vẽ hình chữ nhật màu đỏ
cv.create_rectangle(50, 50, 150, 150, fill="red")
# Vẽ đường thẳng
cv.create_line(0, 0, 200, 200, fill="blue", width=3)
root.mainloop()
Canvas: Vùng không gian để vẽ hình đồ họa, biểu đồ.create_rectangle(x1, y1, x2, y2): Vẽ hình chữ nhật dựa trên tọa độ góc trên bên trái và góc dưới bên phải.
Ví dụ 12: Đồng hồ kỹ thuật số thực tế
Python
import tkinter as tk
import time
def cap_nhat_gio():
chuoi_gio = time.strftime("%H:%M:%S")
lbl_clock.config(text=chuoi_gio)
lbl_clock.after(1000, cap_nhat_gio) # Gọi lại hàm sau 1 giây
root = tk.Tk()
root.title("Đồng hồ PCT")
lbl_clock = tk.Label(root, font=("Courier", 40), bg="black", fg="lime")
lbl_clock.pack()
cap_nhat_gio()
root.mainloop()
time.strftime("%H:%M:%S"): Lấy giờ hệ thống định dạng Giờ:Phút:Giây.after(ms, function): Kỹ thuật đệ quy giúp ứng dụng tự cập nhật mà không làm treo giao diện.
Tổng kết ứng dụng
Từ 12 ví dụ trên, bạn có thể kết hợp để tạo ra các sản phẩm như:
📚 Giáo dục: Phần mềm trộn đề thi (Sử dụng Entry, Button, Messagebox).
🛠 Quản lý: Quản lý thiết bị dạy học (Sử dụng Grid, SQLite, Treeview).
📌 Danh sách bình luận