프로그래밍/PyQt5

[PyQt5] 하나만 선택하는 라디오버튼 - QRadioButton

Dibrary 2021. 8. 13. 10:00
반응형

안녕하세요, Dibrary입니다.

앞선 글에서 여러 개를 선택할 수 있는 체크박스 코드를 살펴보았습니다.

2021.08.11 - [프로그래밍/PyQt5] - [PyQt5] 체크박스를 써보자 - QCheckBox

 

[PyQt5] 체크박스를 써보자 - QCheckBox

안녕하세요, Dibrary입니다. GUI에는 여러가지 볼 수 있는 버튼, 박스 들이 많죠. 이번에는 체크박스를 다뤄볼 겁니다. 체크박스는 여러 개 항목을 미리 입력 해두고, 그 범주 내에서 사용자가 선택

dibrary.tistory.com

이번에는 여러 선택지 중에 단 한 개만 선택이 가능한 라디오버튼을 구현할 것입니다.

 

Qt Designer를 열어서 똑같이 2개의 화면을 만듭니다.

간단하게 1번째 화면에는 radioButton을 3개, 2번째 화면에는 label을 위치시켰습니다.

 

어떻게 동작시킬지 예상이 가시나요?

radioButton을 선택하면 해당 내용의 글자를 새 창에 띄울 겁니다.

 

코드도 기본 템플릿을 먼저 준비해 주세요.

와우 이제는 엄청 익숙하실 코드입니다.

단순히 ui파일만 불러오고 있네요. 첫 번째 화면이 나오고 두 번째 화면으로의 연결 코드가 아무것도 없으므로

지금 상태에서는 첫 번째 화면만 띄울 수 있습니다.

 

코드를 작성해보겠습니다.

굉장히 체크박스와 유사하죠? 

다만 차이점이라면, radioButton은 버튼이므로 각각이 clicked.connect 로 이벤트 연결을 할 수 있습니다.

위에서는 3개의 radioButton이 이름만 다르지 연결되는 이벤트가 똑같은 것을 알 수 있습니다. (각각 다른 이벤트 연결도 가능합니다.)

 

연결된 이벤트를 보면 if - elif로 구현되어 있어서, 버튼 한개만 눌려도 곧바로 다음 화면이 나타난다는 것을 알 수 있습니다.

if가 3개로 구현 되어 있으면 3개의 조건문을 다 검사하지만,

if - elif로 구현이 되어 있으면, 전체 조건문들 중에 한 개만 맞으면 그 한 개만 처리하고 조건문을 벗어납니다. 나머지 elif는 쳐다도 안 보는 것이죠.

그럼 한 개의 버튼이 눌리고 나면, 그 버튼의 글자를 다음 화면으로 넘기고, 다음 화면에 보이는 겁니다.

 

결과를 보겠습니다.

네 2번을 클릭하자마자, 화면이 뜨면서 2번에 해당되는 '글자'가 나타납니다.

 

두 번째 화면은 계속 label에 글자만 띄우면 되니까 코드가 계속 똑같은 것도 확인 할 수 있습니다.

 

굉장히 쉽죠? 아마 웹상에서 설문조사나 혹은 회원가입 같은 화면에서

선택지가 반드시 하나는 존재해야하고, 한 개만 선택이 가능해야 하는 경우에 많이 사용합니다.

(주로, 남/여 선택 이나 초,중,고,대학생 선택같은 경우에 많이 보셨을 겁니다.)

아니면, 데이터 범주를 묶어서 처리할 때도 유용합니다. 

(예, 나이대를 확인한다면 21~30 / 31~40 / 41~50 이렇게요)

 

728x90
반응형