Last Updated on 9월 14, 2021 by Jade(정현호)
크로스 플랫폼 에 사용할 GUI 어플리케이션을 만들 필요가 있어서 여러가지를 고민하던 결과 Python 과 Qt 를 이용 하기로 하여 Mac 환경에서 설정하게 되었습니다.
1. Python 설치
Mac 에서는 기본적으로 Python이 설치가 되어 있습니다만 설치 된 버전이 2.7 버전이라서 3.8.x 버전을 추가로 설치 하도록 하겠습니다.
1-1 파일 다운로드 URL
1-2 버전 선택
포스팅 시점에서 3.8 의 가장 최신 버전을 선택하였습니다
1-3 파일 다운로드
mac 에서 설치할 것이라서 mac 버전의 파일을 다운로드 받으면 됩니다.
1-4 설치 진행
다운로드 된 pkg 파일을 실행하면 아래와 같이 설치 화면이 실행됩니다.
1-5 환경 설정
설치한 python3.8.9 버전을 간편하게 사용하기 위해서 환경변수를 설정 하도록 하겠습니다.
#기존 버전 user$ python --version Python 2.7.10 # 설치한 신규 버전 user$ python3 --version python 3.8.9 # Catalina 이전 bash shell 사용시 # alias 추가 및 환경 변수 파일 다시 읽어들임 user$ echo "alias python=python3" >> ~/.bash_profile user$ . ~/.bash_profile # Catalina 이후 zsh 사용시 # alias 추가 및 환경 변수 파일 다시 읽어들임 user$ echo "alias python=python3" >> ~/.zshrc user$ . ~/.zshrc # alia 확인 user$ python --version Python 3.8.9 # pip 업그레이드 user$ python -m pip install --upgrade pip Installing collected packages: pip Attempting uninstall: pip Found existing installation: pip 20.2.3 Uninstalling pip-20.2.3: Successfully uninstalled pip-20.2.3 Successfully installed pip-21.0.1 # pip upgrade 과정에서 permission 에러 발생시 user$ sudo python3 -m pip install --upgrade pip
2. PySide2 설치
Python 에서 QT 로 GUI 를 작성해보시거나 QT 로 GUI 를 작성을 위해 검색을 하면 많이 언급 되는 부분이 PyQt5 입니다 PyQt5나 PySide2 는 Qt 프레임 워크를 위한 Python 바인딩 세트 입니다.
2-1 PySide2 와 PyQt5
먼저 제작사가 틀립니다
PyQt5는 RiverBank 에서 만들어졌으며, Pyside2 는 Qt 회사인 The Qt Company 에서 제작되었습니다.
그 다음으로는 라이선스가 틀립니다
PyQt5는 Commercial License 및 GPL 라이센스를 사용하며, PySide2 가는 LGPL 라이선스가 채택되어 PyQt5 에 비해 제약이 덜하고 자유롭게 사용할 수 있습니다.
그래서 PySide2를 사용하기로 결정하였고 PySide6 도 나왔으나 Dependency 로 추가로 설치가 필요한 부분이 있어서 PySide2 로 선택 하였습니다.
• PySide2
https://pypi.org/project/PySide2/
• PySide6
https://pypi.org/project/PySide6/
2-2 설치
pip3 를 통해서 설치를 진행하시면 됩니다.
user$ pip3 install PySide2 .............. Installing collected packages: shiboken2, PySide2 Successfully installed PySide2-5.15.2 shiboken2-5.15.2
3. Qt Designer 실행
PySide2 가 설치가 되면 Qt Designer 는 같이 설치가 되어있기 때문에 실행만하면 사용 하면 됩니다 다만 Mac 에서 설치가 경로가 길어서 PATH 환경수가 필요할 것 같아서 아래와 같이 PATH 환경변수 및 alias 내용을 추가 하여 사용하면 더 간단하게 사용할 수 있습니다.
Qt Designer 파일이 있는 위치에 따라서 다음(아래)에서 설정할 환경변수의 경로를 달리 설정하면 됩니다.
# 파일 위치는 두곳 중 한곳으로 조회를 해보시면 됩니다.
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/PySide2/Designer.app/Contents/MacOS 또는 /Users/유저명/Library/Python/3.8/lib/python/site-packages/PySide2/Designer.app/Contents/MacOS
• bash 환경
# PATH 환경 변수에 경로를 추가 echo "export PATH=\$PATH:/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/PySide2/Designer.app/Contents/MacOS" \ >> ~/.bash_profile # backgroud 로 실행을 위해서 & 지정후 alias 사용 echo "alias Designer=\"Designer &\"" >> ~/.bash_profile # 새로운 환경 변수 적용 . ~/.bash_profile
• zsh 환경
# PATH 환경 변수에 경로를 추가 echo "export PATH=\$PATH:/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/PySide2/Designer.app/Contents/MacOS" \ >> ~/.zshrc # backgroud 로 실행을 위해서 & 지정후 alias 사용 echo "alias Designer=\"Designer &\"" >> ~/.zshrc # 새로운 환경 변수 적용 . ~/.zshrc
위와 같이 경로에 대해서 PATH 를 설정 하였다면 아래와 같이 실행하면 Qt Designer 가 실행되게 됩니다.
# 실행 Designer
4. Python 에 PySide2 Import
Python 에서 Designer 에서 작성한 GUI 를 화면에 띄우기 위해서 PySide2 를 Import 해야 하며 추가적인 코드 가 필요 합니다.
4-1 Qt 폼 저장
Designer 에서 개발할 폼에 대해서 일단 저장을 해야 하며 python 코드와 같은 디렉토리에 저장을 합니다.
4-2 python 파일 생성
코드를 작성할 파이썬 파일을 생성 합니다.
4-3 python 코드 작성
PySide2 Import 및 필요 코드를 아래와 같이 작성 합니다.
form_class = loadUiType 에는 Designer 에서 저장한 UI파일명을 지정 합니다.
import sys import random from PySide2.QtWidgets import (QApplication, QLabel, QPushButton, QVBoxLayout, QWidget) from PySide2.QtCore import Slot, Qt from PySide2.QtUiTools import QUiLoader from PySide2.QtUiTools import loadUiType #UI파일 연결 #단, UI파일은 Python 코드 파일과 같은 디렉토리에 위치해야한다. form_class = loadUiType("testpy.ui")[0] #화면을 띄우는데 사용되는 Class 선언 class WindowClass(QMainWindow, form_class) : def __init__(self) : super().__init__() self.setupUi(self) ##### 코드 입력 ##### ##### 코드 입력 ##### if __name__ == "__main__" : #QApplication : 프로그램을 실행시켜주는 클래스 app = QApplication(sys.argv) #WindowClass의 인스턴스 생성 myWindow = WindowClass() #프로그램 화면을 보여주는 코드 myWindow.show() #프로그램을 이벤트루프로 진입시키는(프로그램을 작동시키는) 코드 app.exec_()
4-4 실행
VSCode 사용시 아래와 같이 실행을 합니다.
정상적으로 수행된다면 아래와 같이 Designer 에서 생성한 폼의 GUI 가 동작하게 됩니다.
여기까지 Python 및 PySide2 에 대한 신규설치 등에 확인해보았습니다
Python 이나 Qt 에 대한 추가적인 내용은 다른 포스팅 글에서 기술하도록 하겠습니다.
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io