PyQt QListWidget

Resumo : neste tutorial, você aprenderá como usar a QListWidgetclasse Python para criar uma visualização de lista.

Introdução ao PyQt QListWidget

A QListWidgetclasse permite que você crie um widget de exibição de lista que possui uma única coluna de itens. A QListWidgetItemclasse representa os itens da lista.

A QListWidgetclasse 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:

PyQt 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 QListWidgetobjeto:

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 QInputDialog.getText()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 OKbotão.

Se o usuário inserir um texto e clicar no OKbotão, nós o adicionamos à lista usando o addItem()método do QListWidgetobjeto.

Observe que você pode criar um QListWidgetItemobjeto 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 QListWidgetItemfornece 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 )
PyQt QListWidget - Inserir um item

Neste insert()método, usamos o currentRow()método do QListWidgetobjeto 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_itemLinguagem de código:  Python  ( python )

Neste remove()método, obtemos a linha do item atualmente selecionado e usamos o takeItem()método do QListWidgetobjeto 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 clear()método, usamos o clear()método do QListWidgetobjeto para remover todos os itens da lista.

Resumo

  • Usar a QListWidgetclasse permite criar um widget de visualização de lista.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *