1. Thành phần giao diện (tiếp)

  • Combobox (Combo box - hộp danh sách thả xuống):

Là danh sách thả xuống hoặc tự nhập văn bản tùy ý. Là kết hợp giữa một hộp nhập văn bản (Entry) và một danh sách lựa chọn (Listbox).

Giúp nhập liệu nhanh chóng và chính xác hơn. Ví dụ: chọn trường, chọn lớp, chọn môn học, chọn học kỳ,...

Các câu lệnh liên quan:

# Thêm module ttk từ thư viện 
from tkinter import ttk

# Tạo combobox
combo = ttk.Combobox(cua_so)

# Nhập dữ liệu cho hộp danh sách
combo["values"] = ("A1", "A2", "A3")

# Hiển thị combobox lên của sổ
combo.pack()

# Lấy giá trị từ hộp danh sách
ds_lop = combo.get()

Ví dụ: Viết chương trình chọn môn học. Khi chọn môn học thì hiện thông báo "Môn .... đã được chọn", xem hình dưới

tk_combo.png (16367 KB)

Tham khảo code:

import tkinter as tk
from tkinter import ttk

def thuc_hien():
    kq = combo.get()
    print("Môn " + kq + " đã được chọn")

# Tạo cửa sổ
cua_so = tk.Tk()
cua_so.title("Xử lý với Combo box")
cua_so.geometry("350x100")

# Tạo combobox
combo = ttk.Combobox(cua_so)
combo["values"] = ("Toán học", "Văn học", "Tin học")
combo.pack()

# Tạo nút lệnh thực hiện
btn = tk.Button(cua_so, text = "Xem kết quả", command=thuc_hien)
btn.pack()

# Chạy chương trình
cua_so.mainloop()

Trong đoạn code trên, khi thay các câu lệnh pack() thành pack(pady = 10), lưu và chạy lại chương trình. Ta thấy các thành phần trên cửa sổ được căn chỉnh cách nhau một khoảng y. Như vậy, pack() là trình quản lý bố cục (geometry manager). Nó có tác dụng sắp xếp, căn chỉnh và hiển thị các thành phần (widget như nút bấm, nhãn chữ, ô nhập liệu) lên cửa sổ ứng dụng.

Các tham số (parameters) phổ biến của pack()
Tham số [1, 2, 3, 4] Ý nghĩa & Các giá trị thường dùng
side Hướng đặt widget: 'top' (trên cùng - mặc định), 'bottom' (dưới cùng), 'left' (bên trái), 'right' (bên phải).
fill Kéo giãn widget theo chiều ngang hoặc dọc nếu cửa sổ bị phóng to. Gồm: 'x', 'y', 'both'.
expand Nhận giá trị True hoặc False. Khi cửa sổ mở rộng, widget sẽ chiếm thêm các khoảng trống xung quanh.
padx / pady Tạo khoảng cách (đệm) an toàn tính bằng pixel xung quanh widget theo chiều ngang (x) và dọc (y).