1. 코드

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QCheckBox, QApplication, QLabel

class 체크박스(QWidget):

    def __init__(self):
        super().__init__()
        self.UI초기화()

    def UI초기화(self):
        self.cbox = QCheckBox('체크박스1', self)
        self.cbox.move(40, 30)

        self.cbox.stateChanged.connect(self.changeBox1)

        self.cbox2 = QCheckBox('체크박스2', self)
        self.cbox2.move(150, 30)
        
        self.cbox2.stateChanged.connect(self.changeBox2)

        self.result = QLabel('체크 박스를 선택해주세요.', self)
        self.result.setFixedWidth(300)
        self.result.move(40, 100)

        self.cbox2.toggle()

        self.setGeometry(300, 300, 300, 150)
        self.setWindowTitle('QCheckBox')  
        self.show()

    def changeBox1(self, state):
        print(state)
        if state == Qt.Checked:
            self.result.setText('체크박스1이 선택되었습니다.')
        else:
            self.result.setText('체크박스를 선택해주세요.')

    def changeBox2(self, state):
        if state == Qt.Checked:
            self.result.setText('체크박스2이 선택되었습니다.')
        else:
            self.result.setText('체크박스를 선택해주세요.')

프로그램무한반복 = QApplication(sys.argv)
실행인스턴스 = 체크박스()
프로그램무한반복.exec_()

2. 상세 내용

아래 코드는 체크 박스의 상태를 변경하는 코드입니다.

 self.cbox2.toggle() 

2.1 여러가지 형태 옵션

self.cbox.stateChanged.connect(self.chageBox1)

cbox가 stateChanged(시그널)을 발생하면 changeBox1이라는 정의 함수(슬롯)와 connect(연결)하여 실행하는 코드입니다. stateChanged는 체크박스의 상태가 바뀔 때 신호가 발생하는 시그널입니다.

시그널과 슬롯에 대해서는 6장에서 자세히 다룰 예정입니다.

def changeBox1(self, state):
    print(state)
    if state == Qt.Checked:
        self.result.setText('체크박스1이 선택되었습니다.')
    else:
        self.result.setText('체크박스를 선택해주세요.')

def changeBox2(self, state):
    if state == Qt.Checked:
        self.result.setText('체크박스2이 선택되었습니다.')
    else:
        self.result.setText('체크박스를 선택해주세요.')

시그널을 받았을 때 동작하는 이벤트 함수를 PyQt에서는 슬롯(Slot, 정의 함수)이라고 표현합니다. 여기서 사용된 슬롯 changeBox에서 stateChanged(시그널)은 state(상태 값)도 같이 인자로 넘겨줍니다. 체크박스에 체크가 되면 setText(변경할 텍스트)를 활용해 텍스트를 변경하는 코드입니다.

3. 실행 화면

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e6cfbe8c-3cd9-4c0c-b490-9164c2ad944f/Untitled.png

toggle()을 통해 체크박스2(cbox)가 체크된 상태로 실행