Resumo : neste tutorial, você aprenderá como usar a QListWidget
classe Python para criar uma visualização de lista.
Introdução ao PyQt QListWidget
A QListWidget
classe permite que você crie um widget de exibição de lista que possui uma única coluna de itens. A QListWidgetItem
classe representa os itens da lista.
A QListWidget
classe possui vários métodos úteis para manipular itens, incluindo:
addItems(iterable)
– adiciona itens à lista a partir de um iterável de strings.addItem(QListWidgetItem)
– adiciona um item ao final da lista.insertItem(row, QListWidgetItem)
– insere um item na linha especificada.takeItem(row)
– remove um item de uma linha especificada.clear()
– remove e exclui todos os itens da lista.
Exemplo de classe PyQt QListWidget
O exemplo a seguir mostra como adicionar, inserir, remover e limpar todos os itens de um arquivo QListWidget
:
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)
# create buttons
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)
# show the window
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 and 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())
Linguagem de código: Python ( python )
Como funciona.
Primeiro, crie um QListWidget
objeto:
self.list_widget = QListWidget(self)
Linguagem de código: Python ( python )
Em segundo lugar, adicione uma lista de itens à lista:
self.list_widget.addItems(['Learn Python', 'Master PyQt'])
Linguagem de código: Python ( python )
Terceiro, crie quatro botões para adicionar, inserir, remover e limpar e conecte seus sinais clicados ao método correspondente.
Quarto, defina o add()
método que obtém um texto do usuário e o adiciona à lista usando o addItem()
método:
def add(self):
text, ok = QInputDialog.getText(self, 'Add a New Wish', 'New Wish:')
if ok and text:
self.list_widget.addItem(text)
Linguagem de código: Python ( python )
O
retorna uma tupla de dois elementos. O primeiro elemento armazena o texto de entrada e o segundo elemento indica se o usuário clica no QInputDialog
.getText()OK
botão.
Se o usuário inserir um texto e clicar no OK
botão, nós o adicionamos à lista usando o addItem()
método do QListWidget
objeto.
Observe que você pode criar um QListWidgetItem
objeto e adicioná-lo à lista em vez de usar uma string. Por exemplo:
def add(self):
text, ok = QInputDialog.getText(self, 'Add a New Wish', 'New Wish:')
if ok and text:
list_item = QListWidgetItem()
list_item.setText(text)
self.list_widget.addItem(list_item)
Linguagem de código: Python ( python )
O QListWidgetItem
fornece mais funcionalidades, como definir um ícone para o item da lista.
Quinto, insira um novo item na lista após o item atualmente selecionado:
def insert(self):
text, ok = QInputDialog.getText(self, 'Insert a New Wish', 'New Wish:')
if ok and text:
current_row = self.list_widget.currentRow()
self.list_widget.insertItem(current_row+1, text)
Linguagem de código: Python ( python )
Neste insert()
método, usamos o currentRow()
método do QListWidget
objeto para obter a linha atual do item atualmente selecionado e insertItem()
o método para inserir um item na próxima linha.
Sexto, defina o remove()
método que remove o item atualmente selecionado da lista:
def remove(self):
current_row = self.list_widget.currentRow()
if current_row >= 0:
current_item = self.list_widget.takeItem(current_row)
del current_item
Linguagem de código: Python ( python )
Neste remove()
método, obtemos a linha do item atualmente selecionado e usamos o takeItem()
método do QListWidget
objeto para remover o item.
Sétimo, defina a clear()
função para remover todos os itens da lista:
def clear(self):
self.list_widget.clear()
Linguagem de código: Python ( python )
Neste
método, usamos o clear()
método do clear()
QListWidget
objeto para remover todos os itens da lista.
Resumo
- Usar a
QListWidget
classe permite criar um widget de visualização de lista.