Resumo : neste tutorial, você aprenderá como usar o PyQt QComboBox
para 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 QComboBox
classe:
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 oaddItem()
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 insertPolicy
propriedade permite definir se o combobox deve inserir os itens inseridos na lista.
Exemplo PyQt QComboBox
O exemplo a seguir usa a QCombobox
classe 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
método:self.update
()
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_label
para 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
QComboBox
para criar uma caixa de combinação. - Use
addItem()
ouinsertItem()
para adicionar um item à lista da caixa de combinação. - Conecte-se ao
activated
sinal para acionar uma ação quando o item selecionado de uma caixa de combinação for alterado.