본문 바로가기
Software/Python

[PyQt] PyQt5로 Python GUI 프로그래밍 시작하기 - Hello World! 출력

by lovey25 2019. 1. 30.

Hello world!, 모든 언어의 시작점이죠 

지난글에서 준비해둔 파이썬 GUI 개발환경에서 Hello World 출력하기를 실습해 보겠습니다.

새 파이썬 프로젝트 생성

VS를 열어서 새로운 프로젝트를 생성합니다.

파이썬 응용프로그램 프로젝트를 선택합니다. 그리고 프로젝트가 저장될 위치와 프로젝트 이름 한번 확인해주고 프로젝트를 생성합니다. 프로젝트가 생성되면 아무것도 없는 빈문서가 나타나는데요, 프로그램 기반이 마련되었습니다.

PyQt로 프로그램 GUI 만들기

이제 PyQt의 디자이너(Designer)프로그램을 열어서 화면에 출력할 창을 디자인 해보겠습니다. 디자이너가 어디 깔려있는지 찾는것도 일인데요. VS에서 PyQt를 설치하면 다음의 경로에 설치가 되는걸 확인 했습니다. 

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Lib\site-packages\pyqt5_tools

이 경로로 찾아가보시면 Designer.exe란 파일을 찾으실 수 있을 겁니다. 저는 앞으로 많이 사용을 해야할테니 바탕화면에 바로가기를 하나 만들어 두었습니다.

자 디자이너를 실행합니다.

프로그램이 시작되면 프로젝트 마법사라고 할까요? 새로 생성할 프로젝트의 종류를 선택할 창이 뜹니다. 저는 일단 버튼이 있는 다이얼로그를 선택해 주었습니다. 그리고 “Create”버튼을 누릅니다.

이제 화면에 출력한 위젯을 추가해 주면 되는데요. 위젯이라는게 버튼이나 텍스트상자 등 창을 구성하는 요소들을 얘기하는겁니다. 사용할 수 있는 위젯의 종류들은 프로그램 좌측에 새로로 나와있는데 그냥 마우스로 긁어서 가져오면 됩니다.  MFC와 똑같은 방법이죠.

프로그램이 실행이되면 버튼을 누르면 텍스트창에 “Hello world”가 나타나도록 하는 프로그램을 만들 계획입니다. 먼저 푸시버튼 하나를 배치합니다. 그리고 “Hello World!” 문자를 출력해야하니 텍스트 에디터를 하나 골라서 드래그해서 배치를 합니다.

이제 창 디자인을 저장하는데, 저장할 때 위치를 앞에서 VS에서 생성했던 프로젝트의 소스와 같은 위치에 저장을 합니다. 저는 파일이름은 그냥 “untitled.ui”로 손대지 않았습니다.

이제 VS로 돌아가서 마무리 코딩을 하겠습니다.

코딩하기

소스파일이 지금은 텅텅 비어있는데 묻지도 따지지도 말고 다음 코드를 복사해서 붙여넣기 합니다.

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
form_class = uic.loadUiType("untitled.ui")[0]

class MyWindow(QDialog, form_class):
   def __init__(self):
       super().__init__()
       self.setupUi(self)
       self.pushButton.clicked.connect(self.btn_clicked)

   def btn_clicked(self):
       self.textEdit.setText("Hello World!")

if __name__ == "__main__":
   app = QApplication(sys.argv)
   myWindow = MyWindow()
   myWindow.show()
   app.exec_()

소스코드의 자세한 설명은 이제 파이썬을 공부하면서 차근차근 알아가도록 할텐데요. 지금은 간단하게 흐름만 보도록 하겠습니다. ㅎ

1~3행: 모듈을 불러오는 부분입니다. C++로 치면 #include정도가 될듯 하네요.

4행: PyQt로 디자인한 ui파일을 지정하는데요. 아까 저장했던 파일이름을 그대로 여기 넣어서 코드를 만들어주면 됩니다.

6행: 클래스가 시작되고,

7행: __init__ 함수가 시작되는데요 이 함수는 C++의 생성자와 같은 함수입니다. 

생성자 함수 내부에 10행을 보면, puchButton이란 위젯을 클릭했을 때 어떤 함수를 호출할껀지 열결해주는 부분이 있습니다. 클래스 내부의 “btn_clicked”라는 함수로 연결되어 있는걸 알수 있죠. 이 함수는 9행에 있습니다.

10행: “textEdit”위젯에 “Hello World!” 텍스트가 나오도록 하는 부분입니다.

버튼을 누르면 “Hello World!”가 나오는 흐름은 이렇게 감만 잡는걸로 ㅎㅎ (MFC보다 훨 간단하긴 하네요.)

결과확인

자 이제 모든 작업이 완료되었습니다. 단축키 F5를 눌러서 실행을 해보면 창이 실행되고 여기서 만들어둔 버튼을 눌러보면 짜잔~

파이썬 실습 첫번째 Hello World!출력하기 마치겠습니다.

 

끝!

728x90

댓글6

  • 2019.12.16 11:25

    비밀댓글입니다
    답글

    • Favicon of https://kwonkyo.tistory.com BlogIcon lovey25 2019.12.16 11:30 신고

      사라지게 된다고하신 기존작업이 어떤것인지 좀더 자세히 말씀해 주시겠어요??
      UI는 PyQT디자이너에서 작업하고 로직은 VS에서 작업하는 개념인데 어떤작업이 사라진다는건지 잘 이해를 못했어요

  • Favicon of https://codingclass.tistory.com BlogIcon HopeDeveloper 2019.12.19 10:05 신고

    아 제가 설명을 잘못드렸네요.

    PyQT 에서 UI작업을 하신 후에 코드는 VS에서 작업하는 개념이잖아요.

    PyQT에서 UI작업 -> VS에서 코드 작업 : 여기까지는 이해가 되는 부분입니다.
    PyQT에서 UI작업 -> VS에서 코드 작업 > PyQT에서 UI작업(추가로 UI작업이 필요 생김) > VS에서 코드 재작업
    - 이렇게 되면은 VS에서 코드 작업을 다시 해줘야 하는 부분 발생하더라구요.

    C# 같은 경우에 UI가 추가 생기면은 그대로 작업이 가능했던거 같거든요.

    댓글 감사합니다.




    답글

    • Favicon of https://kwonkyo.tistory.com BlogIcon lovey25 2019.12.19 10:27 신고

      음 대충 이떤 상황인지 이해가 될거 같네요. 그러니까 PyQT에서 위젯의 사이즈를 고치는 등 속성을 바꾸는 단순작업이 아니라 위젯을 아얘 삭제하고 새로 만드는 그런 작업을 했을 때를 말씀하시는거죠?! 위젯을 새로 만들어서 위젯 ID가 변경이 된 경우라면 VS에 아이디를 연동시켜 주어야 하고 그리고 위젯의 타입이 변경되었다면 코딩작업을 다시 해 주어야 겠죠. 그런 경우는 C#에서도 아마 연동 안될것 같은데 그렇지 않나요??

  • 2020.05.11 23:25

    비밀댓글입니다
    답글

    • Favicon of https://kwonkyo.tistory.com BlogIcon lovey25 2020.05.12 11:29 신고

      버튼을 눌러서 특정 파이선 코드 파일을 실행하는건 가능합니다. 그런데 이벤트 코딩없이 실행한다는게 무슨의미인지 잘 모르겠네요. QT자체적인 코딩도 가능한것 같은데 그걸 말씀하시는 걸까요??