프로젝트 및 실습/PyQt

[PyQt] Tri-state Checkbox

jooona 2022. 9. 28. 18:47
반응형

일반적으로 체크박스를 사용하면 체크된 상태(True)와 체크되지 않은 상태(False) 두 가지를 많이 생각합니다.

 

하지만 PyQt에서는 아래의 사진과 같이 체크된 상태와 체크되지 않은 상태, 그리고 그 중간 상태까지 세 종류를 사용할 수 있습니다. 이를 세 가지 상태를 가지는 체크박스라 하여 Tri-state Checkbox라고 합니다.

 

출처: https://www.geeksforgeeks.org/pyqt5-tri-state-check-box/

 

일반적으로는 순서대로 Unchecked, Partially Checked, Checked라고 부릅니다.

 

예제 코드를 살펴보면서 사용법을 알아보겠습니다.

 

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

class MyApp(QWidget):

    def __init__(self):
        super().__init__()
        self.checkbox_example()

    def checkbox_example(self):

        cb1 = QCheckBox('Checkbox 1', self)
        cb2 = QCheckBox('Checkbox 2', self)
        cb3 = QCheckBox('Checkbox 3', self)

        cb1.move(20, 20)  # left, top
        cb2.move(20, 50)
        cb3.move(20, 80)

        cb1.setTristate(True)
        cb2.setTristate(True)
        cb3.setTristate(True)

        cb1.setCheckState(0)
        cb2.setCheckState(1)
        cb3.setCheckState(2)

        print("Checkbox1: ", cb1.checkState())
        print("Checkbox2: ", cb2.checkState())
        print("Checkbox3: ", cb3.checkState())

        self.setWindowTitle('QCheckbox Example')
        self.setGeometry(300, 300, 200, 150)
        self.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    exe = MyApp()
    sys.exit(app.exec_())

 

* 코드 설명

 

1. setTristate(): True를 넣어주면 각각의 체크박스가 세 가지 체크 옵션을 가지도록 설정해줍니다.  

 

2. setCheckState(): 각 체크박스에 체크 상태를 부여해줍니다.

* Argument: 0: Unchecked, 1: Partially Checked, 2: Checked

 

3. checkState(): 각 체크박스의 현재 상태를 반환합니다.

* Return Value: 0: Unchecked, 1: Partially Checked, 2: Checked

 

 

* 실행 결과

 

 

반응형