Tìm hiểu Thư viện Tkinter trong Python
Tài liệu hỗ trợ nâng cao cho học sinh & giáo viên
1.2. Cấu trúc cơ bản của chương trình Tkinter
Mọi chương trình GUI (Giao diện người dùng) với Tkinter đều tuân thủ các bước sau:
| Bước | Mô tả lệnh |
|---|---|
| 1. Import | import tkinter as tk |
| 2. Cửa sổ | root = tk.Tk() (Khởi tạo cửa sổ chính) |
| 3. Widget | Thêm Label, Button, Entry... |
| 4. Vòng lặp | root.mainloop() (Duy trì ứng dụng) |
Python Code
import tkinter as tk
# Tạo cửa sổ chính
root = tk.Tk()
root.title("Chương trình Tkinter đầu tiên")
root.geometry("400x200") # Rộng x Cao
# Hiển thị cửa sổ và chờ thao tác
root.mainloop()
1.3. Widget trong Tkinter
Widget là "linh hồn" của giao diện. Dưới đây là các thành phần bạn sẽ dùng thường xuyên nhất:
| Widget | Chức năng |
|---|---|
| Label | Hiển thị văn bản hướng dẫn |
| Button | Nút thực hiện lệnh (Event Handling) |
| Entry | Ô nhập liệu 1 dòng (Username, Điểm số...) |
| Text | Nhập nội dung dài (Ghi chú, đề bài...) |
| Checkbutton | Lựa chọn nhiều mục (Trắc nghiệm nhiều đáp án) |
1.4 - 1.8. Các ví dụ thực hành tiêu biểu
Ví dụ 5: Máy tính cộng đơn giản
Chương trình cho phép nhập 2 số và hiển thị kết quả khi nhấn nút.
Python Code
import tkinter as tk
def tinh_tong():
try:
# Lấy dữ liệu từ Entry và ép kiểu sang số
so1 = int(e1.get())
so2 = int(e2.get())
tong = so1 + so2
lbl_kq.config(text=f"Kết quả: {tong}")
except:
lbl_kq.config(text="Lỗi: Hãy nhập số!")
root = tk.Tk()
root.title("Máy tính Mini")
tk.Label(root, text="Nhập số thứ nhất:").pack()
e1 = tk.Entry(root)
e1.pack()
tk.Label(root, text="Nhập số thứ hai:").pack()
e2 = tk.Entry(root)
e2.pack()
btn = tk.Button(root, text="Tính Tổng", command=tinh_tong)
btn.pack(pady=10)
lbl_kq = tk.Label(root, text="Kết quả: ", font=("Arial", 12, "bold"))
lbl_kq.pack()
root.mainloop()
1.9. Các phương pháp bố trí giao diện
Để giao diện chuyên nghiệp, chúng ta thường dùng grid() (chia ô như Excel) thay vì pack().
Ví dụ Grid Layout
import tkinter as tk
root = tk.Tk()
# Dòng 0
tk.Label(root, text="Tài khoản:").grid(row=0, column=0, padx=5, pady=5)
tk.Entry(root).grid(row=0, column=1)
# Dòng 1
tk.Label(root, text="Mật khẩu:").grid(row=1, column=0, padx=5, pady=5)
tk.Entry(root, show="*").grid(row=1, column=1)
root.mainloop()
1.10. Khi nào nên ứng dụng Tkinter?
Tkinter là lựa chọn số 1 cho các phần mềm nhỏ hỗ trợ giáo dục:
📝 Phần mềm trộn đề thi trắc nghiệm
📊 Quản lý điểm & chuyên cần
📦 Quản lý thiết bị dạy học
⏱ Đồng hồ đếm ngược giờ thi
Lời khuyên: Hãy bắt đầu với các Widget cơ bản trước khi chuyển sang các thư viện giao diện phức tạp hơn như PySide6 hay CustomTkinter.
📌 Danh sách bình luận