소프트웨어/Python

PYQT5 초기코드

Nerd Dog 2024. 2. 24. 02:00

 

 

 

 

PyQt5는 Python 언어로 크로스 플랫폼 GUI 애플리케이션을 개발할 수 있는 라이브러리이자 Qt 라이브러리의 Python 바인딩으로, Qt는 C++로 작성된 광범위하게 사용되는 크로스 플랫폼 개발 프레임워크이다. 처음 GUI를 만들려고 MFC를 고려해보긴 했지만 크로스 플랫폼이 된다는 점에서 PYQT5가 매력적으로 다가왔습니다.


기능 소개

 

일단 필요한 툴을 설치해줍니다.

▼ 터미널 창을 열어 다음과 같이 입력해주세요.

pip3 install pyqt5

 

맛보기로 pyqt5의 버전의 hello world 코드를 작성해보면

▼ 아래는 단순한 QLabel 하나를 출력시켜주는 GUI입니다. 

from PyQt5.QtWidgets import *

if __name__ == '__main__':
    app = QApplication([]) # app 선언

    label = QLabel("Hello World") # 라벨 생성
    label.show()

    app.exec_() # app 무한루프

 

▼ GUI 레이아웃 사이즈를 설정 안해줬기 때문에 결과는 이렇게 나옵니다. 

 

▼ setText로 텍스트 값을 변경할 수 있습니다.

from PyQt5.QtWidgets import *

if __name__ == '__main__':
    app = QApplication([]) # app 선언

    label = QLabel("Hello World!") # 라벨 생성
    label.setText("HI I AM PYQT5") # 텍스트 변경

    label.show()
    app.exec_() # app 무한루프

 

▼ 텍스트를 변경한 모습


 

▼ 조금 더 나아가서 버튼을 넣어봅시다.

from PyQt5.QtWidgets import *

class MyMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.clickednum = 0
        self.initUI()

    def initUI(self):
        self.label = QLabel('0', self)  # 라벨 생성
        self.button = QPushButton('Change Label', self)  # 버튼 생성
        self.button.move(100,0)
        self.button.clicked.connect(self.changeText)  # 버튼 클릭 시그널에 슬롯 연결

        vbox = QVBoxLayout()  # 수직 박스 레이아웃 생성
        vbox.addWidget(self.label)  # 레이아웃에 라벨 추가
        vbox.addWidget(self.button)  # 레이아웃에 버튼 추가

        self.setLayout(vbox)  # 위젯에 레이아웃 설정

        self.setWindowTitle('Change Label Example')
        self.setGeometry(300, 300, 300, 200)
        self.show()

    def changeText(self):
        self.clickednum+=1
        self.label.setText(str(self.clickednum))  # 라벨 텍스트 변경

if __name__ == '__main__':
    app = QApplication([])
    widget = MyMainWindow()
    widget.show()
    app.exec_()

 

button.clicked.connectchangeText 이벤트를 엮어줘서 버튼을 누르는 순간 changeText 함수가 실행됩니다.

▼ 버튼을 누를때마다 값이 변화합니다.

 


 

장점

 

여러 장점이 있지만 쭉 나열해보자면

 

1. 크로스 플랫폼 호환성: PyQt5는 Windows, macOS, Linux 등 다양한 운영 체제에서 GUI 애플리케이션을 개발하고 실행할 수 있게 해준다.

2. 풍부한 문서와 커뮤니티: PyQt5는 잘 정리된 문서와 활발한 커뮤니티를 갖고 있어, 개발자들이 시작하기 쉽고, 문제가 발생했을 때 도움을 받을 수 있는 자원이 풍부합니다.


3. 상용 및 오픈 소스 라이선스 옵션: PyQt5는 GPL 및 상용 라이선스 옵션을 제공하여, 개인 프로젝트와 상업 프로젝트 모두에 적합합니다.

이러한 장점들은 PyQt5를 Python에서 GUI 애플리케이션을 개발할 때 인기 있는 선택으로 만든다.


 

추세

 

하지만 요즘 GUI 툴 추세가 루프백 주소(127.0.0.1)로 사용 안하는 포트를 열어 웹 페이지를 GUI로 사용하는 것이 트렌드(CGI)인 느낌이라 PYQT5도 쓸모가 없어지는게 아닌가 싶다. 크로스 플랫폼으로 개발 가능하며 이쁘게 PYQT5로 GUI를 만드는 개발자보다 이쁘게 웹 페이지를 만들 수 있는 웹 개발자가 더 많으니 말이다.