PyQt QComboBox

Resumo : neste tutorial, você aprenderá como usar o PyQt QComboBoxpara criar um widget de caixa de combinação.

Introdução ao PyQt QComboBox

Uma caixa de combinação fornece uma lista de opções para que você possa selecionar uma delas. Uma caixa de combinação também é conhecida como widget suspenso ou de seleção.

Para criar um combobox, você usa a QComboBoxclasse:

combobox = QCombobBox(self)Linguagem de código:  Python  ( python )

Depois de criar uma caixa de combinação, você precisa preencher suas opções usando:

  • addItem()– pega um rótulo de string e um valor de dados e os anexa ao final da lista.
  • insertItem()– funciona como o addItem()método, exceto que pega um índice para o primeiro argumento e adiciona o item desse índice à lista.

Além disso, você pode passar uma lista de opções para o método addItems()ou insertItems()de uma só vez.

Para obter os itens atualmente selecionados, você pode usar um dos seguintes métodos:

  • currentData()– retorna o item atualmente selecionado.
  • currentIndex()– retorna o índice do item atualmente selecionado.
  • currentText()– retorna o texto do item atualmente selecionado.

Opcionalmente, uma caixa de combinação permite inserir texto se você definir sua propriedade editável como True.

A insertPolicypropriedade permite definir se o combobox deve inserir os itens inseridos na lista.

Exemplo PyQt QComboBox

O exemplo a seguir usa a QComboboxclasse para criar uma caixa de combinação:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout, QComboBox
from PyQt6.QtCore import Qt


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('PyQt QComboBox')
        self.setMinimumWidth(300)

        # create a grid layout
        layout = QVBoxLayout()
        self.setLayout(layout)

        cb_label = QLabel('Please select a platform:', self)

        # create a combobox
        self.cb_platform = QComboBox(self)
        self.cb_platform.addItem('Android')
        self.cb_platform.addItem('iOS')
        self.cb_platform.addItem('Windows')

        self.cb_platform.activated.connect(self.update)

        self.result_label = QLabel('', self)

        layout.addWidget(cb_label)
        layout.addWidget(self.cb_platform)
        layout.addWidget(self.result_label)

        # show the window
        self.show()

    def update(self):
        self.result_label.setText(
            f'You selected {self.cb_platform.currentText()}')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())Linguagem de código:  Python  ( python )

Saída:

Como funciona.

Primeiro, crie um widget de caixa de combinação:

self.cb_platform = QComboBox(self)Linguagem de código:  Python  ( python )

Segundo, preencha os itens usando o addItem()método:

self.cb_platform.addItem('Android')
self.cb_platform.addItem('iOS')
self.cb_platform.addItem('Windows')Linguagem de código:  Python  ( python )

Terceiro, conecte o sinal ativado ao self.update()método:

self.cb_platform.activated.connect(self.update)Linguagem de código:  Python  ( python )

O combobox emite o sinal ativado quando você altera o item do combobox.

Por fim, defina o update()método que atualiza o texto do result_labelpara o item selecionado do combobox.

def update(self):
    self.result_label.setText(
        f'You selected {self.cb_platform.currentText()}')Linguagem de código:  Python  ( python )

Observe que usamos o currentText()método para obter o texto do item atualmente selecionado.

Resumo

  • Use PyQt QComboBoxpara criar uma caixa de combinação.
  • Use addItem()ou insertItem()para adicionar um item à lista da caixa de combinação.
  • Conecte-se ao activatedsinal para acionar uma ação quando o item selecionado de uma caixa de combinação for alterado.

Deixe um comentário

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