PYQT5 초기코드
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.connect를 changeText 이벤트를 엮어줘서 버튼을 누르는 순간 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를 만드는 개발자보다 이쁘게 웹 페이지를 만들 수 있는 웹 개발자가 더 많으니 말이다.