pip install PySide2 PyInstaller
먼저 파이썬 설치 및 위 두가지 라이브러리를 설치한다.
1. main.ui
QtDesigner를 실행하여 아래와 같이 ui를 구성하고 저장한다.
2. resources.qrc
QtDesigner에 리소스 편집기에 icon과 ui를 등록한다.
메인 윈도우 속성을 속성편집기에서 아래처럼 수정해준다. 여기서는 무료로 제공되는 burning.ico를 다운받아서 사용하였다.
3. resources.py
main.py
에서 ui 및 icon등의 리소소를 불러오기위해서는 아래 명령어로 컴파일을 해주어야한다.
pyside2-rcc resources.qrc -o resources.py
4. func.py
계산기에서 사용할 메소드들을 func.py
에 구성해준다
def add(x, y):
return x+ydef sub(x, y):
return x-ydef mul(x, y):
return x*ydef div(x, y):
return x/ydef pow(x, y):
return x**y
5. main.py
아래와 같이 import resources import func
를 통해서 리소스와 메소드를 불러오고, ui의 object들에 기능을 부여해준다.
from PySide2 import QtWidgets, QtGui, QtCore, QtXml, QtUiTools
import sys
import resources
import funcloader = QtUiTools.QUiLoader()class MainWindow(QtCore.QObject):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__()
self.ui = loader.load(':/ui/main.ui', None)
self.ui.show()
self.setup_ui() def setup_ui(self):
self.ui.action_Quit.triggered.connect(app.quit)
self.ui.pushButton_add.clicked.connect(self.add)
self.ui.pushButton_sub.clicked.connect(self.sub)
self.ui.pushButton_mul.clicked.connect(self.mul)
self.ui.pushButton_div.clicked.connect(self.div)
self.ui.pushButton_pow.clicked.connect(self.pow) def add(self):
x = float(self.ui.lineEdit_x.text())
y = float(self.ui.lineEdit_y.text())
z = func.add(x, y)
self.ui.lineEdit_z.setText(str(z)) def sub(self):
x = float(self.ui.lineEdit_x.text())
y = float(self.ui.lineEdit_y.text())
z = func.sub(x, y)
self.ui.lineEdit_z.setText(str(z)) def mul(self):
x = float(self.ui.lineEdit_x.text())
y = float(self.ui.lineEdit_y.text())
z = func.mul(x, y)
self.ui.lineEdit_z.setText(str(z)) def div(self):
x = float(self.ui.lineEdit_x.text())
y = float(self.ui.lineEdit_y.text())
z = func.div(x, y)
self.ui.lineEdit_z.setText(str(z)) def pow(self):
x = float(self.ui.lineEdit_x.text())
y = float(self.ui.lineEdit_y.text())
z = func.pow(x, y)
self.ui.lineEdit_z.setText(str(z))if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
app.setWindowIcon(QtGui.QIcon(':/icon/counter.ico'))
main = MainWindow()
sys.exit(app.exec_())
콘솔에서 실행
python main.py
6. Calculator.exe
PyInstaller에 플래그를 넣어서 아래와 같은 계산기 앱을 패키징한다.
pyinstaller --icon="burning.ico" --name="Calculator" --noconsole --onefile main.py
dist 폴더에 39.5MB정도의 simple gui가 생성됨.
6. 정리
- QtDesigner를 이용하여 간단하게
main.ui
를 설계한다. - 리소스 파일
resource.qrc
를 리소스편집기를 통해 만든다. 이때 리소스에main.ui
를 포함시킨다 main.py
에서import
할resource.py
를 compile한다.main.py
에서import
할func.py
를 구성한다.main.py
를 구성한다.setup_ui
로 object와 function을 연결한다.- PyInstaller를 이용하여 exe파일로 패키징한다.