본문 바로가기
  • ▒ 네모의 쉽게 배우는 네트워크 | 개발 ▒
파이썬 개발/Qypt5

PyQt5 - RadioButton 누르면 라벨(Label) 출력하기

by 너l모 2022. 6. 8.
반응형

※ 업무하면서 습득한 내용들을 정리해 놓은 포스팅입니다 :P 추가로 궁금하신 점은 댓글로 남겨주시고 필요한 자료 있으면 요청주세요! 잘못된 내용이 있으면 고쳐주시면 감사하겠습니다. 자료 퍼가실 때는 출처 남겨주세요!


 ο 목차

     


    > 포스팅 주제 : 파이썬 Pyqt5로 윈도우 GUI 프로그래밍하기

    > 개요 : 라디오버튼의 시그널과 라벨을 연결시켜서 라디오버튼이 눌려지면 해당 버튼에 해당하는 설명이 라벨로 출력 되었다가 라디오 버튼 설정을 떼면 라벨도 사라지도록 프로그래밍하기. 

     

    1. 전체 소스 코드

    - 4개의 Radio Button + 4개의 라벨 각각 연결

    # radio button + label example1
    
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(800, 600)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
    
    
            self.label_subject = QtWidgets.QLabel(self.centralwidget)
            self.label_subject.setGeometry(QtCore.QRect(50, 40, 631, 18))
            self.label_subject.setObjectName("label_2")
            self.label_subject.setText("Radio Button + Label Test Window")
    
            self.label_main = QtWidgets.QLabel(self.centralwidget)
            self.label_main.setGeometry(QtCore.QRect(50, 100, 161, 18))
            self.label_main.setObjectName("label")
            self.label_main.setText("\'Select 1 option\'")
    
    
            self.radioButton = QtWidgets.QRadioButton(self.centralwidget)
            self.radioButton.setGeometry(QtCore.QRect(50, 150, 611, 22))
            self.radioButton.setObjectName("radioButton")
            self.radioButton.setText("Option1")
            self.radioButton.pressed.connect(self.show_lab)
    
            self.radioButton_2 = QtWidgets.QRadioButton(self.centralwidget)
            self.radioButton_2.setGeometry(QtCore.QRect(50, 230, 261, 22))
            self.radioButton_2.setObjectName("radioButton_2")
            self.radioButton_2.setText("Option2")
            self.radioButton_2.pressed.connect(self.show_lab)
    
            self.radioButton_3 = QtWidgets.QRadioButton(self.centralwidget)
            self.radioButton_3.setGeometry(QtCore.QRect(50, 300, 161, 22))
            self.radioButton_3.setObjectName("radioButton_3")
            self.radioButton_3.setText("Option3")
            self.radioButton_3.pressed.connect(self.show_lab)
    
            self.radioButton_4 = QtWidgets.QRadioButton(self.centralwidget)
            self.radioButton_4.setGeometry(QtCore.QRect(50, 370, 171, 22))
            self.radioButton_4.setObjectName("radioButton_4")
            self.radioButton_4.setText("Option4")
            self.radioButton_4.pressed.connect(self.show_lab)
    
            self.label_1 = QtWidgets.QLabel(self.centralwidget)
            self.label_1.setGeometry(QtCore.QRect(80, 180, 691, 20))
            self.label_1.setObjectName("label_1")
            self.label_1.setText("=> Example of Option1")
            self.label_1.setHidden(True)
    
            self.label_2 = QtWidgets.QLabel(self.centralwidget)
            self.label_2.setGeometry(QtCore.QRect(80, 260, 491, 20))
            self.label_2.setObjectName("label_2")
            self.label_2.setText("=> Example of Option2")
            self.label_2.setHidden(True)
    
            self.label_3 = QtWidgets.QLabel(self.centralwidget)
            self.label_3.setGeometry(QtCore.QRect(80, 330, 491, 20))
            self.label_3.setObjectName("label_3")
            self.label_3.setText("=> Example of Option3")
            self.label_3.setHidden(True)
    
            self.label_4 = QtWidgets.QLabel(self.centralwidget)
            self.label_4.setGeometry(QtCore.QRect(80, 400, 491, 20))
            self.label_4.setObjectName("label_4")
            self.label_4.setText("=> Example of Option4")
            self.label_4.setHidden(True)
    
            MainWindow.setCentralWidget(self.centralwidget)
    
        def show_lab(self):
            if self.radioButton.isDown() :
                self.label_1.setHidden(False)
            if self.radioButton.isDown() == False :
                self.label_1.setHidden(True)
                
            if self.radioButton_2.isDown() :
                self.label_2.setHidden(False)
            if self.radioButton_2.isDown() == False :
                self.label_2.setHidden(True)
                
            if self.radioButton_3.isDown() :
                self.label_3.setHidden(False)
            if self.radioButton_3.isDown() == False :
                self.label_3.setHidden(True)
                
            if self.radioButton_4.isDown() :
                self.label_4.setHidden(False)
            if self.radioButton_4.isDown() == False :
                self.label_4.setHidden(True)
    
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)
        MainWindow.show()
        sys.exit(app.exec_())

     

    2. 코드 설명

    1) 라디오 버튼 시그널과 함수 연결하기

    self.radioButton.pressed.connect(self.show_lab)

    마우스 커서가 버튼 안에 있는 동안 왼쪽 마우스 버튼을 누르면 시그널 발생. 즉, 라디오 버튼이 눌려지는 순간 시그널을 발생시키는 메소드.

    - pressed 시그널이 발생하면 show_lab 함수와 연결되도록 코딩

     

    2) 라벨 숨기기/표시하기

    # 라벨 텍스트 숨기기
    self.label_1.setHidden(True)
    
    # 라벨 텍스트 표시하기
    self.label_1.setHidden(False)

    - setHidden 메소드 파라미터가 True로 설정되면 라벨의 텍스트를 숨기고, setHidden 메소드 파라미터가 False로 설정되면 라벨의 텍스트를 출력함.

     

    3) 라디오 버튼 시그널을 수신하여 라벨 숨기기/표시하기

        def show_lab(self):
            if self.radioButton.isDown() :
                self.label_1.setHidden(False)
            if self.radioButton.isDown() == False :
                self.label_1.setHidden(True)

    - show_lab 함수는 radioButton이 눌린 상태일 때 라벨의 텍스트를 표시하고 눌리지 않은 상태일 때 라벨의 텍스트를 숨김

    - isDown() : 라디오버튼의 메소드로 라디오 버튼이 눌린 상태일 때 True를 반환하고, 눌리지 않은 상태일 때 False를 반환

     

    3. 출력 결과

     

     

     


    ※ 좋아요와 구독은 큰 힘이 됩니다. 감사합니다. 

    반응형

    댓글