[PyQT5] GUI 프로그래밍/.ui파일 .py파일 변환/Main Window 생성 [1]

2021. 6. 28. 08:32GUI Programming/PyQT5 (GUI Programming)

반응형

[우선 따라해보는 Python]

 

https://github.com/Mr-DooSun/pyqt5-gui/blob/master/ex1_Mainwindow/mainwindow.py

 

Mr-DooSun/pyqt5-gui

Contribute to Mr-DooSun/pyqt5-gui development by creating an account on GitHub.

github.com

 

Python에는 여러개의 GUI 프로그램들이 있습니다

저는 pyqt5를 이용하여 GUI프로그래밍을 시작해보도록하겠습니다

 

우선 pyqt5를 사용하기 위해서는 pip를 이용하여 pyqt5를 다운해줍니다

그리고 pyqt5는 designer라는것을 이용하여 드래그 앤 드롭 형식으로 쉽게 UI를 구성할수있어 함께 다운해줍니다

 

[ Window ]

pip install pyqt5
pip install pyqt5-tools

[ Raspbian ]

sudo apt-get install python-pyqt5
sudo apt-get install python-pyqt5-tools

or

sudo apt-get install python3-pyqt5
sudo apt-get install python3-pyqt5-tools

 

다운이 끝나면 designer 프로그램을 켜줍니다

보통 [ Python\Lib\site-packages\pyqt5_tools ] 이경로에 designer 프로그램이 있습니다.

 

켜주시면 아래 사진과 같은 화면이 뜹니다 Main Window를 클릭 해준뒤 Create를 눌러줍니다

 

그리고 파일을 저장해줍니다 ( ui 파일 형식으로 저장됩니다 )

 

그리곤 해당 ui파일이 있는 파일 경로로 가서 cmd를 켜줍니다

아래의 명령어를 치시면 해당 ui파일이 py파일로 변환 됩니다

pyuic5 ui파일 -o py파일
pyuic5 mainwindow.ui -o mainwindow.py

그럼 아래 소스코드와 같이 변환됩니다

하지만 이상태로 소스코드를 돌리면 아무런 반응이 없을겁니다.

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

 

아무런 반응이 없을경우 호출을 안한경우이니 당황하지마시고

아래 소스코드를 추가하여 실행을 해줍니다

if __name__=="__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()

    sys.exit(app.exec_())

 

실행 해주시면 아래와 같은 화면이 뜰겁니다

그럼 성공입니다

 

다음은 label을 추가해보도록 하겠습니다

반응형