본문 바로가기

PYQT5

[파이썬, PYQT5] QPushButton 생성 및 click 했을때 connect 함수 연결

 

 

import sys

from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QLineEdit, QLabel, QPushButton


class MainScreen(QMainWindow):

    def __init__(self, wid, hei):
        super().__init__()

        self.setWindowTitle("TEST SCREEN")  # 프로젝트 타이틀 설정
        self.setGeometry(0, 0, int(wid * .5), int(hei * .5))  # 화면 사이즈 설정

        self.mainWidget = QWidget()                     # 메인 위젯 생성
        self.mainLayout = QVBoxLayout(self.mainWidget)  # 메인 레이아웃 생성 및 메인 위젯 연결
        self.setCentralWidget(self.mainWidget)          # 메인윈도우 센트럴위젯에 메인 위젯 연결

        self.lbl = QLabel()                             # 라벨 생성
        self.txt = QLineEdit()                          # 라인에디트 생성
        self.btn = QPushButton("BUTTON")                # 버튼 생성

        self.mainLayout.addWidget(self.btn)             # 메인 레이아웃에 버튼 추가
        self.mainLayout.addWidget(self.lbl)             # 메인 레이아웃에 라벨 추가
        self.mainLayout.addWidget(self.txt)             # 메인 레이아웃에 라인에드트 추가


        self.btn.clicked.connect(self.doClicked)        # 클릭하였을때 실행될 함수 연결

        self.colorList = ['RED', "GREEN", "BLUE"]
        self.idx = 0

        self.show()

    # 클릭 이벤트 함수
    def doClicked(self):
        self.lbl.setStyleSheet("background-color : " + self.colorList[self.idx])        # 라벨 색깔 변경
        self.txt.setText(self.colorList[self.idx])                                      # 색상 텍스트 출력

        if self.idx == 2:
            self.idx = 0
        else:
            self.idx = self.idx + 1



if __name__ == '__main__':
    app = QApplication(sys.argv)
    size: QSize = app.primaryScreen().size()    # 모니터 사이즈

    main = MainScreen(size.width()/2, size.height())
    sys.exit(app.exec_())

 

 

버튼을 클릭 하였을때 호출 해줄 함수 연결 부분

self.btn.clicked.connect(self.doClicked)

 

 

첫번째 클릭
두번째 클릭
세번째 클릭