PyQt5 - QPushButton, QLabel 만들기
본문 바로가기
파이썬(Python)/파이썬 GUI(PyQt5 & tkinter)

PyQt5 - QPushButton, QLabel 만들기

by Squat Lee 2020. 12. 5.

 

 

 

PyQt5를 이용하여 PushButton과 Label을 만들어 보겠습니다.

 

PyQt5에서 PushButton은 QPushButton이고, Label은 QLabel로 쓰셔서 기능을 사용하시면 됩니다.

 

전체 코드는 포스트 맨 아래에 있습니다.


class TestWindow(QMainWindow):

    def __init__(self):

        super().__init__()

        self.setupUI()

 

윈도는 지난 포스트와 다르게 'class'를 사용해서 만들겁니다.

 

'setupUI'라는 함수를 사용해서 윈도우를 세팅할 예정이고, 'super().__init__()'은 상속받는 class에서 시작하게 하는 명령어라고 생각하심 됩니다.

 

    def setupUI(self):

        self.setWindowTitle('ButtonLabelWindow')

        self.setGeometry(100,100,300,100)

 

setupUI 함수에서 윈도우 타이틀도'ButtonLabelWindow' 라고 만들고, 크기와 위치도 지정합니다.

 

        self.label = QLabel("Message:"self)

        self.label.move(20,20)

        self.label.resize(200,20)

 

레이블은 "Message:"라고 쓰여진 옆에 먼가가 쓰여질 수 있도록 설정하고, 위치, 크기를 설정합니다.

 

        btnSave = QPushButton('저장',self)

        btnSave.move(20,50)

        btnSave.clicked.connect(self.btnSave_clicked)

 

        btnCancel = QPushButton('취소',self)

        btnCancel.move(120,50)

        btnCancel.clicked.connect(self.btnCancel_clicked)

 

Label이나 LineEdit은 앞에 'self.'를 붙이는데 버튼은 안 붙이네요. 저는 레이블과 라인에딧은 윈도우에 붙어 있고, 버튼은 따로라 그렇다고 무작정 외웠습니다.

 

버튼은 저장하는 버튼과 취소 버튼을 누르고 각 함수에 연결합니다.

 

    def btnSave_clicked(self):

        self.label.setText('저장 되었습니다.')

 

    def btnCancel_clicked(self):

        self.label.setText('취소 되었습니다.')

 

각 버튼에 연결하는 함수입니다. 저장을 누르면 '저장 되었습니다.', 취소를 누르면 '취소 되었습니다.'가 레이블에 표시됩니다.

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = TestWindow()

    window.show()

    app.exec_()

 

마지막에 이게 제일 중요하죠. 다른 모듈이 아니라 현재 창에서 실행되면 아래를 실행해라는 함수죠. 

 

현재 코딩된 파이썬 파일의 위치(sys.argv)를 인자로 QApplication으로 app을 생성하고, 맨 위에서 만든 'TestWindow()' 클래스를 window로 생성합니다.

 

그리고 window.show() 윈도우를 보여주는 거죠. app.exec_() 무한 루프처럼 계속 실행하라는 얘기죠.

 

실행 결과는 아래와 같습니다.  

 

 

 

실행하면 위의 그림과 같은 창이 뜹니다.

 

 

저장을 누르면, '저장 되었습니다'라고 레이블이 나타나고

 

 

취소를 누르면 취소 되었다고 하네요.


 

class TestWindow(QMainWindow):

    def __init__(self):

        super().__init__()

        self.setupUI()

 

    def setupUI(self):

        self.setWindowTitle('ButtonLabelWindow')

        self.setGeometry(100,100,300,100)

 

        self.label = QLabel("Message:"self)

        self.label.move(20,20)

        self.label.resize(200,20)

 

        btnSave = QPushButton('저장',self)

        btnSave.move(20,50)

        btnSave.clicked.connect(self.btnSave_clicked)

 

        btnCancel = QPushButton('취소',self)

        btnCancel.move(120,50)

        btnCancel.clicked.connect(self.btnCancel_clicked)

 

    def btnSave_clicked(self):

        self.label.setText('저장 되었습니다.')

 

    def btnCancel_clicked(self):

        self.label.setText('취소 되었습니다.')

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = TestWindow()

    window.show()

    app.exec_()


모듈을 가져오는 것은 생략이 되어 버렸네요.

아래와 같이 시스템 모듈과 PyQt5.QtWidgets 에서 모든걸 Import 하심 됩니다.


import sys
from PyQt5.QtWidgets import *


728x90
반응형

댓글