반응형
Checkbox에 체크를 하거나 체크를 풀어줄 때 어떤 이벤트를 실행하고 싶다면 stateChanged 시그널을 사용할 수 있습니다.
바로 코드를 살펴보겠습니다.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.button1 = QCheckBox('Checkbox 1', self)
self.button2 = QCheckBox('Checkbox 2', self)
self.button3 = QCheckBox('Checkbox 3', self)
self.checkbox_example()
def checkbox_example(self):
# 버튼 위치 지정
self.button1.move(20, 20) # left, top
self.button2.move(20, 50)
self.button3.move(20, 80)
# cb_change 함수와 연결
self.button1.stateChanged.connect(self.cb_change)
self.button2.stateChanged.connect(self.cb_change)
self.button3.stateChanged.connect(self.cb_change)
self.setWindowTitle('QCheckbox Example')
self.setGeometry(300, 300, 200, 150)
self.show()
def cb_change(self, state):
if self.sender() == self.button1:
print("Button1 state change: ", state)
if self.sender() == self.button2:
print("Button2 state change: ", state)
if self.sender() == self.button3:
print("Button3 state change: ", state)
if __name__ == '__main__':
app = QApplication(sys.argv)
exe = MyApp()
sys.exit(app.exec_())
체크박스의 상태가 변화했을 때, stateChanged.connect를 통해 자신이 원하는 함수를 실행시킬 수 있습니다.
제가 작성한 코드를 살펴보면 button1, button2, button3의 체크 상태를 변경시키면 자동으로 cb_change()라는 함수를 실행합니다.
cb_change 함수에서는 sender() 함수를 통해 어떤 체크박스에서 시그널이 발생되었는지를 확인하고, 해당 체크박스가 실행되었다는 출력을 발생시킵니다.
여기서 파라미터로 받아오는 state를 통해 시그널이 발생된 체크박스의 현 상태(바뀌게 된 상태)를 쉽게 확인할 수 있습니다.
* state: 체크박스의 현재 상태
0: Unchecked
1: Partially Checked
2: Checked
반응형
'프로젝트 및 실습 > PyQt' 카테고리의 다른 글
[PyQt] Ctrl + KeyPressEvent 사용법 (1) | 2022.10.04 |
---|---|
[PyQt] Table Widget 열 너비를 Text 길이에 맞추기 (0) | 2022.09.28 |
[PyQt] Tri-state Checkbox (0) | 2022.09.28 |
[PyQt] Qt Designer 설치 및 실행 (in Pycharm) (0) | 2022.09.14 |