QCheckBox 위젯은 on(선택)/off(해제) 의 두 상태를 갖는 버튼입니다. (QCheckBox 공식 문서) 참고
setTristate() 메서드를 사용하여 '변경 없음(no change)' 상태를 가질 수 있습니다.

checkState() 메서드를 사용하여 선택/변경 없음/해제 여부에 따라 각각 2/1/0 값을 반환합니다.
ButtonGroup 클래스를 사용하여 상호 베타적인 exclusive/non-exclusive 버튼 그룹을 만들 수 있습니다. exclusive 버튼 그룹은 여러 개 중 하나의 버튼만 선택할 수 있습니다. (QButtonGroup 공식 문서) 참고
QCheckBox 위젯에 자주 쓰이는 메서드와 시그널은 아래 표와 같습니다.
자주 쓰이는 메서드
| 메서드 | 설명 |
| text() | 체크 박스의 라벨 텍스트를 반환합니다. |
| setText() | 체크 박스의 라벨 텍스트를 설정합니다. |
| isChecked() | 체크 박스의 상태를 반환합니다. (True/False) |
| checkState() | 체크 박스의 상태를 반환합니다. (2/1/0) |
| toggle() | 체크 박스의 상태를 변경합니다. |
자주 쓰이는 시그널
| 시그널 | 설명 |
| pressed() | 체크 박스를 누를 때 신호를 발생합니다. |
| released() | 체크 박스에서 땔 때 신호를 발생합니다. |
| clicked() | 체크 박스를 클릭할 때 신호를 발생합니다. |
| stateChanged() | 체크 박스의 상태가 바뀔 때 신호를 발생합니다. |
17-1 예제: ex16
| import sys from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox from PyQt5.QtCore import Qt class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): cb = QCheckBox('Show title', self) cb.move(20, 20) cb.toggle() cb.stateChanged.connect(self.changeTitle) self.setWindowTitle('QCheckBox') self.setGeometry(300, 300, 300, 200) self.show() def changeTitle(self, state): if state == Qt.Checked: self.setWindowTitle('QCheckBox') else: self.setWindowTitle('') if __name__ == '__main__': app = QApplication(sys.argv) ex = MyApp() sys.exit(app.exec_()) |
17-2 설명
체크 박스 상태에 따라 QWidget titlebar에 'QCheckBox' 글자가 나타나고 사라집니다.
| cb = QCheckBox('Show title', self) |
'Show title' 이라는 텍스트 라벨을 갖는 체크박스를 하나 만듭니다.
| cb.toggle() |
체크 박스는 기본이 off 상태이므로 on 상태로 바꾸기 위해 toggle() 메서드를 호출합니다.
| cb.stateChanged.connect(self.changeTitle) |
체크 박스의 상태가 바뀔 때 발생하는 시그널 stateChanged 을 changeTitle 슬롯에 연결한다.
| def changeTitle(self, state): if state == Qt.Checked: self.setWindowTitle('QCheckBox') else: self.setWindowTitle('') |
체크박스의 상태(state)가 changeTitle() 메서드의 매개변수로 주어집니다.
체크가 되었으면 타이틀을 'QCheckBox'로, 그렇지 않으면 빈 문자열로 나타납니다.
17-3 결과

'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글
| 19. QComboBox (0) | 2021.07.23 |
|---|---|
| 18. QRadioButton (0) | 2021.07.23 |
| 16. QLabel (0) | 2021.07.23 |
| 15. QPushButton (0) | 2021.07.23 |
| 14. 그리드 레이아웃 (0) | 2021.07.23 |