본문 바로가기
파이썬 (Python)/파이썬 GUI + PyQt5

파이썬 Python GUI 구현 PyQt5 설치하기

by ★√★ 2021. 1. 26.

안녕하세요, 이번 포스팅은 PyQt5 설치 QLabel 을 어떻게 구현하는지에 대한 내용입니다. PyQt5는 Python 내부적으로 간단한 프로그램을 만드는 GUI 기능을 제공하는 패키지입니다. 

 

 오늘은 오랜만에 Python 관련된 글을 Posting 하려고 합니다. 이전에 제가 기재했는지는 모르겠지만, 모국어 & 외국어도 하나의 언어지만, 컴퓨터와 대화하는 programming도 하나의 언어라고 생가하여, 같이 공부 하고 있습니다. 여러분도, 너무 어렵게 생각하시마시고, 저와 함께  도전해보시죠! (참고로, 저도 초보입니다.)

 

 

 

 

오늘은 Python의 GUI 구현을 위해서, 필요한 PyQt5에 대해서, 설명해 보도록 하겠습니다. 

 

PyQt5에 대해서는 간단한 설명은 아래와 같습니다. (위키백과 참조 https://en.wikipedia.org/wiki/PyQt)

 

 

PyQt - Wikipedia

PyQt is a Python binding of the cross-platform GUI toolkit Qt, implemented as a Python plug-in. PyQt is free software developed by the British firm Riverbank Computing. It is available under similar terms to Qt versions older than 4.5; this means a variety

en.wikipedia.org

 

- PyQt는 파이썬 플러그인으로구현 된 크로스 플랫폼 GUI 도구 키트 Qt의 파이썬 바인딩입니다. PyQt는 영국 회사 리버 뱅크 컴퓨팅에 의해 개발 된 무료 소프트웨어입니다. 4.5보다 오래된 Qt 버전과 유사한 조건으로 사용할 수 있습니다. 이는 GNU 일반 공공 라이센스(GPL) 및 상용 라이센스를 포함한 다양한 라이선스를 의미하지만 GNU 일반 공공 라이선스(LGPL)는 아닙니다. PyQt는 마이크로 소프트 윈도우뿐만 아니라 리눅스와 맥 OS (또는 다윈)를포함하여 유닉스의다양한 맛을 지원합니다 . 

 

- PyQt는 약 440개의 클래스와 6,000개 이상의 함수 및 메서드를 구현합니다.

 

- GUI 위젯의 상당한 세트

  SQL 데이터베이스에 액세스하기위한 클래스 (ODBC, MySQL, PostgreSQL, 오라클, SQLite)[6]

  QScintilla, 신틸라기반의 풍부한 텍스트 편집기 위젯

  데이터베이스에서 자동으로 채워지는 데이터 인식 위젯

  XML 파서, SVG 지원

  Windows에서 ActiveX 컨트롤을 포함하기 위한 클래스(상용 버전에서만)[7]

  이러한 바인딩을 자동으로 생성하기 위해 Phil Thompson은 다른 프로젝트에서도 사용되는 도구 SIP를개발했습니다.

 

- Example #1  (PyQt4 기준으로 기재된 내용)

 

1) Code 

#! /usr/bin/env python3

2 # Character Encoding: UTF-8

3 #

4 # Here we provide the necessary imports.

5 # The basic GUI widgets are located in QtGui module.

6 import sys

7 from PyQt4.QtGui import QApplication, QWidget

8

9 # Every PyQt4 application must create an application object.

10 # The application object is located in the QtGui module.

11 app = QApplication(sys.argv)

12

13 # The QWidget widget is the base class of all user interface objects in PyQt4.

14 # We provide the default constructor for QWidget. The default constructor has no parent.

15 # A widget with no parent is called a window.

16 root = QWidget()

17

18 root.resize(320, 240) # The resize() method resizes the widget.

19 root.setWindowTitle("Hello, World!") # Here we set the title for our window.

20 root.show() # The show() method displays the widget on the screen.

21

22 sys.exit(app.exec_()) # Finally, we enter the mainloop of the application.
 

- Result

 

 

 

 

- 그럼 기본적인 설명은 여기까지 하고, 제가 구현한 Code와 함께, 설명드리도록 하겠습니다. 일단, Pycharm에서, 실행시키고, PyQt5를 구현하기 위해서 PyQt5 Package를 설치를 합니다. 

 

- pip install PyQt5

 

- 저는 이미 설치가 완료가 되었기 때문에, Requirement already statisfied 라고 나옵니다. 설치가 완료가 되면, Package를 이용할 수 있게 선언해주셔야 되고, 그에 맞게 나와 같이 Code를 설정해주시면 됩니다.

 

 

 

# PyQt5 의 Pakage에 Qtwidgets의 모듈을 선언합니다. 

from PyQt5 import QtWidgets



# PyQt5 의 Pakage에 Qtwidgets의 모듈을 선언과 동시에, QApplication, QMainWindow 선언 합니다. 

from PyQt5.QtWidgets import QApplication, QMainWindow



# sys 모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다. 자세한 내용은, 아래에 추가하도록 하겠습니다.

import sys



# Test1라는 함수를 선언해준다.
def Test1(): 



# PyQt5 내장 모듈을 통해, 경로 및 관련 내용 지정한다.
view = QApplication(sys.argv)
test = QMainWindow()



# 창을 보여주는 위치와 Size를 지정한다.
test.setGeometry(300, 300, 500, 500)



# 창의 메인 Title을 지정한다.
test.setWindowTitle("Davey To be Programmer")



# 창에, 특정위치에, Script를 하나 추가한다.
script = QtWidgets.QLabel(test)
script.setText("English Chinese")
script.move(50,50)



#창을 보여준다. 단, sys.exit()를 사용하지 않으면, 창이 생겼다 바로 사라진다.
test.show()
sys.exit(view.exec_())



# Test1 함수를 실행한다.
Test1()

 

- 위에 설명드린 사항은 기초이 부분이기 때문에, 직접 따라하다 보시면, 수월하게 하실수 있을거라고 생각합니다. 작성된 Code를 실행해보면 아래 결과를 얻을 수 가 있습니다. 

 

 

 

- 좀 허접하긴 하지만, 일단 창을 띄우고 관련 내용 집어넣는데는 성공하였습니다. 그럼 다음편에는 더 많이 준비하여 Posting하도록 하겠습니다. 그리고, 아래 사항은 sys 관련 내용입니다. 참조 하세요! 

 

- sys (참조 : https://wikidocs.net/33#sys)

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다. 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab