반응형
※ 업무하면서 습득한 내용들을 정리해 놓은 포스팅입니다 :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. 출력 결과
※ 좋아요와 구독은 큰 힘이 됩니다. 감사합니다.
반응형
'파이썬 개발 > Qypt5' 카테고리의 다른 글
Pyqt5 - gui 멈춤, gui freezing 해소, QThread 사용, multithreading, Long-running task offloading (0) | 2022.09.08 |
---|---|
PyQt5 - QFileDialog.getOpenFileName 파일 선택후 파일명 가져와서 라인 에디터에 입력하기 (0) | 2022.08.09 |
PyQt5 - QLabel(레이블) 글자 잘림 현상 해결 (0) | 2022.08.08 |
PyQt5 - 어플리케이션, 위젯, 윈도우, 이벤트 루프에 대해서 (0) | 2022.08.03 |
PyQt5 - 메인 윈도우에서 다른 윈도우 열기 (0) | 2022.08.03 |
댓글