프로그래밍 관련/PyQt

PyQt 라디오버튼 radio button(2) group box

존버매니아.임베디드 개발자 2022. 8. 14. 14:20
반응형

한편 여러개의 라디오버튼 중에 1개만 선택된다고 했는데,

여기서 문제가 있다.

 

예를 들어 버튼2개중에 1개만 선택, 버튼3개중에 1개만 선택

이렇게 묶고 싶은 경우가 있을 수 있는데

 

앞의 예시처럼 라디오버튼 5개를 만들면

2개중에 1개선택, 3개중에 1개선택 이렇게 독립적으로 가는게아니라

그냥 버튼 5개중에 1개만 선택 가능하도록 그런식으로 구성된다.

 

그래서 라디오버튼을 서로다른 별개의 그룹으로 묶는 기능이 필요한데 이 때 사용하는게 group box다.

라디오버튼을 group box 위에 올려놓고 쓰면

해당 group box 안에 들어있는 라디오버튼 끼리만 exclusive하게 동작하게 된다.

 

groupbox1
   라디오1-1 라디오1-2 라디오1-3 <- 3개 중에 한개 선택

groupbox2
   라디오2-1 라디오2-2 <- 2개 중에 한개 선택

이런식으로 말이다.

import sys
from PyQt5.QtWidgets import *
   
    
class MyWindow(QMainWindow):
         
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Test")
        self.setGeometry(1000, 200, 700, 700)

        # Groupbox1. 여기에 라디오 버튼 3개 올릴 것임
        self.gpbox1 = QGroupBox(self)
        self.gpbox1.setGeometry(50,100,200,300)

        # Groupbox2. 여기에 라디오 버튼 2개 올릴 것임
        self.gpbox2 = QGroupBox(self)
        self.gpbox2.setGeometry(400,100,200,300)
       
        #라디오버튼 3개, 이것들은 Groupbox1에 올라가고 자기들끼리 exclusive
        self.radio11 = QRadioButton("radio1-1",self.gpbox1)
        self.radio11.move(0,0)        

        self.radio12 = QRadioButton("radio1-2",self.gpbox1)
        self.radio12.move(0,100)        

        self.radio13 = QRadioButton("radio1-3",self.gpbox1)
        self.radio13.move(0,200)

        #라디오버튼 2개, 이것들은 Groupbox2에 올라가고 자기들끼리 exclusive
        self.radio21 = QRadioButton("gp2_radio1",self.gpbox2)
        self.radio21.move(0,0)
        self.radio22 = QRadioButton("gp2_radio2",self.gpbox2)
        self.radio22.move(0,100)
      
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()

    app.exec_()

 

 

반응형