Chuyển tới nội dung chính

Bài 7: ListBox trong guizero

1. ListBox là gì?

ListBox là danh sách lựa chọn cho phép người dùng chọn một mục hoặc nhiều mục. Thường dùng trong các menu chọn tỉnh, danh sách sản phẩm, danh sách người dùng, v.v.


2. Cú pháp tạo ListBox

from guizero import App, ListBox

app = App()
listbox = ListBox(app, items=["A", "B", "C"])
app.display()

3. Các thuộc tính quan trọng

items

Danh sách các mục hiển thị.

listbox.items = ["Item 1", "Item 2"]

value

Lấy mục đang được chọn.

selected = listbox.value
listbox.value = "Item 2"

➤ Chọn nhiều mục (multiselect=True)

box = ListBox(app, items=["A", "B", "C"], multiselect=True)

➤ Thêm và xoá mục

listbox.append("New item")
listbox.remove("A")

➤ Lấy danh sách tất cả mục đang chọn (nếu multiselect)

selected = listbox.value

4. Sự kiện khi chọn mục

def on_select():
print("Đã chọn:", listbox.value)

listbox = ListBox(app, items=["A", "B"], command=on_select)

5. Ví dụ đầy đủ

from guizero import App, ListBox, Text, PushButton, info

app = App(title="Demo ListBox")

Text(app, "Chọn một món ăn:")
foods = ["Bánh mì", "Phở", "Bún bò", "Cơm tấm"]

box = ListBox(app, items=foods, width=20, height=6)

def show_choice():
info("Bạn chọn", box.value)

PushButton(app, text="Xác nhận", command=show_choice)

app.display()

🎯 BÀI TẬP LUYỆN TẬP

Bài tập 1 – Chọn màu

Tạo ListBox gồm: "Red", "Green", "Blue". Khi bấm nút "Hiển thị", hiện thông báo: "Bạn đã chọn: màu"


Bài tập 2 – Chọn nhiều sở thích

Tạo ListBox multiselect=True với các mục: "Bóng đá", "Âm nhạc", "Du lịch", "Đọc sách" Nút "Xem kết quả" → hiển thị danh sách tất cả mục được chọn.

Gợi ý: ",".join(listbox.value).


Bài tập 3 – Danh sách động

Tạo giao diện với:

  • 1 TextBox để nhập mục mới
  • 1 nút “Thêm” → thêm vào ListBox
  • 1 nút “Xoá mục đang chọn” → xoá mục được chọn trong ListBox