[PyQt5] 위젯, 체크박스, 메소드, 변화,

2020. 2. 12. 14:17IT/PyQt5

 

체크박스를 사용해서 체크했을 때, 체크를 풀었을 때 상황에 따라 다양한 옵션을 적용할 수 있습니다.

 

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

class QCheckBoxApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        checkbox1 = QCheckBox('첫 번째 체크박스', self)
        checkbox2 = QCheckBox('두 번째 체크박스', self)
        checkbox1.move(20,10)
        checkbox2.move(20, 30)
        checkbox1.toggle()
        checkbox1.stateChanged.connect(self.changeTitle)
        checkbox2.stateChanged.connect(self.changeColor)

        self.setWindowTitle('체크박스')
        self.setGeometry(500,500,200,80)
        self.show()

    def changeTitle(self, state):
        if state == Qt.Checked:
            self.setWindowTitle('제목 수정됨')
        else:
            self.setWindowTitle(' ')

    def changeColor(self, state):
        if state == Qt.Checked:
            self.setStyleSheet('background-color: green;')
        else:
            self.setStyleSheet('background-color: black')

if __name__ == "__main__":
    app = QApplication(sys.argv)
    ax = QCheckBoxApp()
    sys.exit(app.exec_())

 

체크박스를 2개를 만들어 각각 다른 메소드를 적용하였습니다. 첫 번째 체크박스를 선택하면 제목이 수정되고, 두 번째 체크박스를  선택하면 배경 색이 바뀝니다. 원리는 체크박스를 상태가 변환된다는 시그널 발생 시 특정 메소드를 실행하는 방식입니다.