Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách sử dụng lớp QListWidget trong Python
Trong bài viết này, bạn sẽ tìm hiểu cách sử dụng lớp QListWidget trong Python, một thành phần quan trọng của thư viện PyQt, để tạo ra một widget hiển thị danh sách các mục. QListWidget cho phép bạn quản lý các mục danh sách dễ dàng với nhiều tính năng như thêm, xóa, chèn và xóa tất cả các mục chỉ bằng vài dòng mã. Qua các ví dụ cụ thể, bạn sẽ nắm vững cách thao tác với danh sách trong ứng dụng của mình, từ đó xây dựng các giao diện người dùng trực quan và tiện lợi hơn.

Giới thiệu về PyQt QListWidget
Lớp QListWidget cho phép bạn tạo một widget hiển thị danh sách với một cột các mục. Các mục trong danh sách được đại diện bởi lớp QListWidgetItem.
Lớp QListWidget có nhiều phương thức hữu ích để thao tác với các mục trong danh sách, bao gồm:
addItems(iterable)– thêm các mục vào danh sách từ một iterable chứa các chuỗi.addItem(QListWidgetItem)– thêm một mục vào cuối danh sách.insertItem(row, QListWidgetItem)– chèn một mục vào vị trí hàng được chỉ định.takeItem(row)– xóa một mục khỏi hàng được chỉ định.clear()– xóa và loại bỏ tất cả các mục trong danh sách.
Ví dụ về lớp PyQt QListWidget
Ví dụ sau sẽ minh họa cách thêm, chèn, xóa và xóa toàn bộ các mục từ một QListWidget:
Bài viết này được đăng tại [free tuts .net]

import sys
from PyQt6.QtWidgets import QInputDialog, QApplication, QWidget, QGridLayout, QListWidget, QPushButton
from PyQt6.QtGui import QIcon
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('My Wish List')
self.setWindowIcon(QIcon('./assets/wishlist.png'))
self.setGeometry(100, 100, 400, 100)
layout = QGridLayout(self)
self.setLayout(layout)
self.list_widget = QListWidget(self)
self.list_widget.addItems(['Learn Python', 'Master PyQt'])
layout.addWidget(self.list_widget, 0, 0, 4, 1)
# Tạo các nút
add_button = QPushButton('Add')
add_button.clicked.connect(self.add)
insert_button = QPushButton('Insert')
insert_button.clicked.connect(self.insert)
remove_button = QPushButton('Remove')
remove_button.clicked.connect(self.remove)
clear_button = QPushButton('Clear')
clear_button.clicked.connect(self.clear)
layout.addWidget(add_button, 0, 1)
layout.addWidget(insert_button, 1, 1)
layout.addWidget(remove_button, 2, 1)
layout.addWidget(clear_button, 3, 1)
# Hiển thị cửa sổ
self.show()
def add(self):
text, ok = QInputDialog.getText(self, 'Add a New Wish', 'New Wish:')
if ok and text:
self.list_widget.addItem(text)
def insert(self):
text, ok = QInputDialog.getText(self, 'Insert a New Wish', 'New Wish:')
if ok và text:
current_row = self.list_widget.currentRow()
self.list_widget.insertItem(current_row + 1, text)
def remove(self):
current_row = self.list_widget.currentRow()
if current_row >= 0:
current_item = self.list_widget.takeItem(current_row)
del current_item
def clear(self):
self.list_widget.clear()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
Cách hoạt động
Đầu tiên, tạo một đối tượng QListWidget:
self.list_widget = QListWidget(self)
Tiếp theo, thêm danh sách các mục vào danh sách:
self.list_widget.addItems(['Learn Python', 'Master PyQt'])
Tạo bốn nút Add, Insert, Remove, và Clear, sau đó kết nối tín hiệu clicked của chúng với các phương thức tương ứng.
Định nghĩa phương thức add() để lấy văn bản từ người dùng và thêm nó vào danh sách bằng phương thức addItem():
def add(self):
text, ok = QInputDialog.getText(self, 'Add a New Wish', 'New Wish:')
if ok và text:
self.list_widget.addItem(text)


Phương thức QInputDialog.getText() trả về một tuple gồm hai phần tử. Phần tử đầu tiên lưu trữ văn bản nhập vào, và phần tử thứ hai là giá trị boolean cho biết người dùng có nhấn nút OK hay không.
Nếu người dùng nhập văn bản và nhấn nút OK, văn bản sẽ được thêm vào danh sách bằng phương thức addItem() của đối tượng QListWidget.
Bạn cũng có thể tạo một đối tượng QListWidgetItem và thêm nó vào danh sách thay vì chỉ dùng chuỗi. Ví dụ:
def add(self):
text, ok = QInputDialog.getText(self, 'Add a New Wish', 'New Wish:')
if ok và text:
list_item = QListWidgetItem()
list_item.setText(text)
self.list_widget.addItem(list_item)
-
Đối tượng
QListWidgetItemcung cấp thêm nhiều tính năng như đặt biểu tượng cho mục trong danh sách. -
Chèn một mục mới vào danh sách sau mục hiện tại đang được chọn:
def insert(self):
text, ok = QInputDialog.getText(self, 'Insert a New Wish', 'New Wish:')
if ok và text:
current_row = self.list_widget.currentRow()
self.list_widget.insertItem(current_row + 1, text)


-
Trong phương thức
insert(), chúng ta sử dụng phương thứccurrentRow()của đối tượngQListWidgetđể lấy hàng hiện tại của mục đang được chọn, và dùng phương thứcinsertItem()để chèn mục mới vào hàng kế tiếp. -
Định nghĩa phương thức
remove()để xóa mục hiện tại đang được chọn khỏi danh sách:
def remove(self):
current_row = self.list_widget.currentRow()
if current_row >= 0:
current_item = self.list_widget.takeItem(current_row)
del current_item
-
Trong phương thức
remove(), chúng ta sử dụng phương thứctakeItem()của đối tượngQListWidgetđể xóa mục. -
Định nghĩa phương thức
clear()để xóa tất cả các mục khỏi danh sách:
def clear(self):
self.list_widget.clear()
Phương thức clear() của đối tượng QListWidget sẽ xóa toàn bộ các mục trong danh sách.
Kết bài
Lớp QListWidget cung cấp cho bạn một mạnh mẽ để hiển thị và quản lý các danh sách trong ứng dụng. Với các phương thức tiện lợi như thêm, xóa, chèn và xóa toàn bộ các mục, bạn có thể dễ dàng tùy chỉnh và thao tác với danh sách theo nhu cầu của mình. Bằng cách sử dụng QListWidget, bạn sẽ cải thiện trải nghiệm người dùng và xây dựng những giao diện trực quan, linh hoạt trong các ứng dụng PyQt.

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng