Appia의 IT세상

파이썬[Python GUI, PyQt5 Tutorial 002] PyQt5 윈도우 창 띄우기/만들기 본문

Python/Python PyQt5 (GUI)

파이썬[Python GUI, PyQt5 Tutorial 002] PyQt5 윈도우 창 띄우기/만들기

Appia 2020. 6. 7. 07:04
반응형

파이썬[Python GUI, PyQt5 Tutorial 002] PyQt5 창 띄우기윈도우 창 띄우기/만들기

 

앞선 포스팅에서는 PyQt5를 설치하는 방법에 대해서 간단히 포스팅을 해봤습니다. 이번 포스팅에서는 본격적으로 GUI를 만드는 방법에 대해서 이야기를 해보고자 합니다.

 

가장 먼저, 간단히 위젯을 띄우기를 해보겠습니다. 물론, 조금더 쉽게 설명을 드리자면, 향후에 버튼등이 표시될 수 있는 Application에 관련된 화면을 뛰어보겠습니다. 흔히들 이 부분에 대해서 창을 띄운다고 하기도 합니다. 

example) 

import sys
 
from PyQt5.QtWidgets import QApplication, QWidget
 
 
class QtGUI(QWidget):
 
    def __init__(self):
 
        super().__init__()
 
        self.show()
 
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
 
    ex = QtGUI()
 
    app.exec_()
cs

result) 

창띄우기 결과 

먼저 간단히 위의 코드에 대해서 살펴보겠습니다. 

import sys
 
from PyQt5.QtWidgets import QApplication, QWidget
cs

먼저 필요로 하는 모듈에 대해서 위와 같이 불러와야 합니다. 대부분의 PyQt5의 GUI들은 QtWidgets에 포함이 되어 있습니다. QtWidgets에서 QApplication, QWidget을 바로 사용할 수 있게 불러옵니다. 만약에 위와 같은 코드를 다음과 같이 작성했다고 과정하겠습니다. 

import sys
 
import PyQt5.QtWidgets
cs

그럼 나머지 코드들도 다음과 같이 변경이 되어야 합니다. 

import sys
 
import PyQt5.QtWidgets
 
 
class QtGUI(PyQt5.QtWidgets.QWidget):
 
   ...# 생략
 
 
if __name__ == '__main__':
 
    app = PyQt5.QtWidgets.QApplication(sys.argv)
 
    ex = QtGUI()
 
    app.exec_()
cs

보다 사용자가 편히 코딩할 수 처음 from ~ import부분을 활용하였습니다.

 

class QtGUI(QWidget):
 
    def __init__(self):
 
        super().__init__()
 
        self.show()
 
cs

위의 부분을 검토해보면, QtGUI클래스는 QWidget을 상속받아 옵니다. 그럼 QWidget이 가지고 있는 메소드등을 다 가져와서 QtGUI에서 사용할 수가 있습니다. 그리고, QWidget 클래스에 선언되어 있는 __init__()을 실행을 해줍니다. 즉, super().__init__()을 통해서 상속을 해준 부분 즉 QWidget클래스에 있는 __init__()을 실행해줍니다. 

 

그리고, self.show()을 통해서, 창을 뛰워 표현해주는 부분입니다. 물론 관련된 부분에 대한 클래스가 선언이 되어야만 표시가 될 것입니다.  

 

if __name__ == '__main__':
 
    app = QApplication(sys.argv)
 
    ex = QtGUI()
 
    app.exec_()
cs

 

그럼 이제 마지막 부분입니다. 먼저, if __name__ == '__main__': 경우는 현재 작성하고 있는 모듈을 실행할 때 다음과 같은 조건문을 작성합니다. __name__이라는 부분에는 현재 작성하고 있는 모듈의 이름이 저장되는 공간입니다. 따라서, 다음 조건문 부분에 작성하는 부분에 대해서 실행시켜 주는 조건문입니다. 

 

이제 부터 조금 혼란스러울 수 있습니다. 혼란을 조금이나마 덜어 주기 위해서, 다음과 같은 그림으로 조금 설명을 드리고자 합니다. 

위에서 보이는 그림과 같이 별도의 연결이 없어도 실제 QWidget에 내용들이 Application에 명시가 됩니다. 실제 관련된 부분들은 app.exec_()가 실행될 때, 모두가 나타나게 됩니다. 즉 흔히 말하면, QWidget을 표현하기 위한 Application을 명시하고, 이에 대한 QWidget명시합니다. 그런후에 exec_()을 통하여 루프 될면서, 실제 작성한 부분들을 표현해주는 형태입니다. 그래서 다음과 같이 생각하셔도 됩니다. 

if __name__ == '__main__':
 
    app = QApplication(sys.argv)
 
    # 표현한 GUI 클래스 참조
 
    app.exec_()
cs

즉 QApplication(sys.argv) - exec_()사이에 표현하고자 하는 부분들을 작성해주시면 됩니다. 

 

윈도우 창의 제목 변경하기 

위에서 생성한 윈도우 창의 좌측 상단을 보면 'Python'이라고 되어 있습니다. 하지만, 이 부분에 대해서는 변경이 가능합니다. 다음과 같은 메소드를 이용하여 변경을 해보도록 하겠습니다. 

setWindowTitle("Title")

그럼 이 부분에 대해서 위의 작성한 코드에 반영하여 살펴보겠습니다. 

import sys
 
from PyQt5.QtWidgets import QApplication, QWidget
 
 
class QtGUI(QWidget):
 
 
    def __init__(self):
 
        super().__init__()
 
        self.setWindowTitle("Appia Qt GUI")
 
        self.show()
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
 
    ex = QtGUI()
 
    app.exec_()
cs

 위에서 보이는 코드에서 self.setWindowTitle()메소드를 이용하여 다음과 윈도우 창의 제목을 입력하였습니다. 실행결과는 다음과 같습니다. 

보이는 바와 같이 윈도우 창의 제목이 바뀐것을 확인하였습니다. 생각보다는 간단합니다. 하지만 뭐든지 시작이 매우 어려운 것 같습니다. 혹시 설치 안하시는 분들은 다음 링크를 참조하여 설치 PyQt5를 설치하시길 바랍니다. 

파이썬[Python GUI, PyQt5 Tutorial 001] PyQt5 설치하기

 

이번 포스팅에서는 파이썬[Python GUI, PyQt5 Tutorial 002] PyQt5 윈도우 창 띄우기/만들기 라는 주제로 간단한 윈도우창을 만드는 방법에 대해서 PyQt5를 이용하여 살펴봤습니다. 혹시 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

반응형
Comments