Resumo : neste tutorial, você aprenderá como usar a QCheckBox
classe PyQt para criar um widget de caixa de seleção.
Introdução ao widget PyQt QCheckBox
A QCheckBox
classe permite criar um widget de caixa de seleção, que pode ser ativado ou desativado. Para criar uma caixa de seleção usando a QCheckBox
classe, siga estas etapas:
Primeiro, importe a QCheckBox
classe:
from PyQt6.QtWidgets import QCheckBox
Linguagem de código: JavaScript ( javascript )
Segundo, crie uma nova instância da QCheckBox
classe:
checkbox = QCheckBox(text)
Linguagem de código: Python ( python )
O programa a seguir mostra uma janela que possui uma caixa de seleção:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QCheckBox, QGridLayout
from PyQt6.QtCore import Qt
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('PyQt QCheckBox')
self.setGeometry(100, 100, 320, 210)
# create a grid layout
layout = QGridLayout()
self.setLayout(layout)
# create a checkbox
checkbox = QCheckBox('I agree', self)
layout.addWidget(checkbox, 0, 0, Qt.AlignmentFlag.AlignCenter)
# show the window
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
Linguagem de código: Python ( python )
Observe que o programa usa QGridLayout
para colocar a caixa de seleção na janela.
Saída:
O sinal stateChanged
Uma caixa de seleção emite o stateChanged
sinal sempre que você a marca ou desmarca.
Se quiser fazer algo quando a caixa de seleção estiver marcada ou desmarcada, você pode conectar um slot ao stateChanged
sinal. Por exemplo:
checkbox = QCheckBox('I agree', self)
checkbox.stateChanged.connect(self.on_checkbox_changed)
Linguagem de código: Python ( python )
O stateChanged
sinal envia um valor que indica se o botão está marcado ou desmarcado. Para verificar o estado de a QCheckBox
, você cria uma Qt.CheckState
instância:
state = Qt.CheckState(value)
Linguagem de código: Python ( python )
E compare-o com um dos três valores:
Estado | Significado |
---|---|
Qt.CheckState.Checked |
Verificado |
Qt.CheckState.Unchecked |
Desmarcado |
Qt.CheckState.PartiallyChecked |
Parcialmente verificado |
Observe que Qt.CheckState.PartiallyChecked
é usado para uma caixa de seleção tristate que será abordada em breve.
Por exemplo:
def on_checkbox_changed(self, value):
state = Qt.CheckState(value)
if state == Qt.CheckState.Checked:
print('Checked')
elif state == Qt.CheckState.Unchecked:
print('Unchecked')
Linguagem de código: Python ( python )
Além disso, você pode usar o isChecked()
método para verificar se uma caixa de seleção está marcada.
A seguir mostramos um programa completo que exibe uma mensagem no console quando uma caixa de seleção é marcada ou desmarcada:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QCheckBox, QGridLayout
from PyQt6.QtCore import Qt
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('PyQt QCheckBox')
self.setGeometry(100, 100, 320, 210)
# create a grid layout
layout = QGridLayout()
self.setLayout(layout)
# create a checkbox
checkbox = QCheckBox('I agree', self)
checkbox.stateChanged.connect(self.on_checkbox_changed)
layout.addWidget(checkbox, 0, 0, Qt.AlignmentFlag.AlignCenter)
# show the window
self.show()
def on_checkbox_changed(self, value):
state = Qt.CheckState(value)
if state == Qt.CheckState.Checked:
print('Checked')
elif state == Qt.CheckState.Unchecked:
print('Unchecked')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
Linguagem de código: Python ( python )
Configuração marcada ou desmarcada do PyQt QCheckBox programaticamente
A QCheckBox
classe possui o setChecked()
método que permite marcar ou desmarcar uma caixa de seleção programaticamente.
Se você passar True
para o setChecked()
método, a caixa de seleção estará marcada. Porém, se você passar False
para o setCheck()
método, a caixa de seleção ficará desmarcada.
Além disso, você pode usar o setCheckState()
método da QCheckBox
classe para definir o estado da caixa de seleção. O setCheckState()
método aceita um dos três valores de estado da Qt.CheckState
enumeração.
O programa a seguir ilustra como usar o setChecked()
método para marcar e desmarcar uma caixa de seleção:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QCheckBox, QPushButton, QGridLayout
from PyQt6.QtCore import Qt
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('PyQt QCheckBox')
self.setGeometry(100, 100, 320, 210)
# create a grid layout
layout = QGridLayout()
self.setLayout(layout)
# create a checkbox
self.checkbox = QCheckBox('I agree', self)
check_button = QPushButton('Check', self)
check_button.clicked.connect(self.check)
uncheck_button = QPushButton('Uncheck', self)
uncheck_button.clicked.connect(self.uncheck)
layout.addWidget(self.checkbox, 0, 0, 0, 2,
Qt.AlignmentFlag.AlignCenter)
layout.addWidget(check_button, 1, 0)
layout.addWidget(uncheck_button, 1, 1)
# show the window
self.show()
def check(self):
self.checkbox.setChecked(True)
def uncheck(self):
self.checkbox.setChecked(False)
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 checkbox e adicione-o ao atributo da classe:
self.checkbox = QCheckBox('I agree', self)
Linguagem de código: Python ( python )
Ao tornar o checkbox um atributo da classe, podemos referenciá-lo em outros métodos dentro da mesma classe.
Segundo, crie dois QPushButton
widgets e conecte cada um deles aos métodos check()
e uncheck()
:
check_button = QPushButton('Check', self)
check_button.clicked.connect(self.check)
uncheck_button = QPushButton('Uncheck', self)
uncheck_button.clicked.connect(self.uncheck)
Linguagem de código: Python ( python )
Terceiro, chame o setChecked()
método com True para marcar a caixa de seleção no check()
método:
def check(self):
self.checkbox.setChecked(True)
Linguagem de código: Python ( python )
Por fim, chame o setChecked()
método com False para desmarcar a caixa de seleção do uncheck()
método:
def uncheck(self):
self.checkbox.setChecked(False)
Linguagem de código: Python ( python )
Criando uma caixa de seleção tristate
Além de marcado e desmarcado, a QCheckBox
suporta o terceiro estado que indica “sem alteração”. Nesse caso, uma caixa de seleção possui três estados:
- Verificado
- Desmarcado
- Parcialmente verificado
Na prática, você usa uma caixa de seleção tristate para dar ao usuário a opção de não marcar nem desmarcar a caixa de seleção.
Para criar uma caixa de seleção tristate, você usa setTristate()
para True:
checkbox.setTristate(True)
Linguagem de código: Python ( python )
O programa a seguir mostra uma caixa de seleção tristate:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QCheckBox, QGridLayout
from PyQt6.QtCore import Qt
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('PyQt QCheckBox')
self.setGeometry(100, 100, 320, 210)
# create a grid layout
layout = QGridLayout()
self.setLayout(layout)
# create a tristate checkbox
self.checkbox = QCheckBox('A Tristate Checkbox', self)
self.checkbox.setTristate(True)
layout.addWidget(self.checkbox, 0, 0, Qt.AlignmentFlag.AlignCenter)
# show the window
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
Linguagem de código: Python ( python )
Saída:
Resumo
- Use a
QCheckbox
classe para criar um widget de caixa de seleção. - O
stateChanged
sinal é emitido quando a caixa de seleção está marcada ou desmarcada. - Use o método
setChecked()
ousetState()
para marcar ou desmarcar uma caixa de seleção programaticamente. - Use
setTristate()
o método para criar uma caixa de seleção tristate.