1. Mục tiêu:
- Listbox
- Bài tập
2. Thành phần giao diện (tiếp)
- Hộp hiển thị danh sách (Listbox):
-
- Là một thành phần (widget) hiển thị danh sách các lựa chọn dưới dạng các dòng văn bản.
- Cho phép người dùng chọn 1 dòng, nhiều dòng rời rạc hay nhiều dòng liên tục.
- Có thể tùy chỉnh linh hoạt như đổi màu chữ, màu nền, di chuyển danh sách thông qua thanh cuốn.
- Các phương thức thường dùng:
+ Tạo Listbox: lst_hs = tk.Listbox(cua_so, width=30, height=10)
+ Thêm phần tử:
Thêm một mục vào vị trí cụ thể: lst_hs.insert(index, item)
Thêm vào cuối list: lst_hs.insert(tk.END, "Vu Ha")
+ Lấy toàn bộ dữ liệu trên list: ds = lst_hs.get(0, tk.END)
+ Xóa phần tử ở vị trí đầu tiên của list: lst_hs.delete(0)
+ Xóa toàn bộ: lst_hs.delete(0, tk.END)
+ Xóa các mục trong khoảng chỉ định: lst_hs.delete(first, last)
+ Lấy vị trí (index) của mục đang được người dùng chọn: lst_hs.curselection()
- Ví dụ: Tạo cửa sổ như hình dưới, khi nhấn "Hiện danh sách" sẽ hiện: "Minh, Huế, An, Hạnh, Trường, Thanh" ra Listbox.

Code tham khảo:
import tkinter as tk
def hien_ds():
# Lấy dữ liệu ra danh sách
kq = lst.get(0, tk.END)
print(kq)
# Tạo cửa sổ
cua_so = tk.Tk()
cua_so.title("List - in Console")
cua_so.geometry("300x170")
#cột 0 co giãn
cua_so.columnconfigure(0, weight=1)
# Tạo listbox
lst = tk.Listbox(cua_so, width=15, height=6)
lst.grid(row = 0, column=0, pady=10)
# Thêm học sinh vào list
lst.insert(tk.END, "Minh", "Huế", "An", "Hạnh", "Trường", "Thanh")
# Button thực hiện sự kiện hiển thị toàn bộ ra Console
btn = tk.Button(cua_so, text="Hiện danh sách", command=hien_ds)
btn.grid(row=1, column=0, pady=10)
# Chạy chương trình
cua_so.mainloop()
3. Bài tập
Bài 1: Tạo cửa sổ gồm Listbox, Button "Hiện Console" sẽ hiện: "Minh, Huế, An, Hạnh, Trường, Thanh" từ Listbox ra cửa sổ dòng lệnh (Console).
Bài 2: Tạo cửa sổ gồm: Listbox và 2 Button "Thêm" và "Xóa". Khi mở cửa sổ. Danh sách học sinh như bài 1 nhưng được lấy từ tệp .csv. Nhấn nút "Thêm" thì thêm học sinh "Lan" vào cuối danh sách. Nhấn "Xóa" thì xóa học sinh đang chọn.