맨위로가기

PyQt

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

PyQt는 1998년 Riverbank Computing에 의해 처음 출시된 파이썬 프로그래밍 언어용 GUI(Graphical User Interface) 위젯 도구이다. Qt 라이브러리에 대한 파이썬 바인딩을 제공하며, 다양한 GUI 클래스를 포함하고 있다. PyQt는 Qt의 핵심, GUI, 네트워크, OpenGL, SQL, SVG, XML, 멀티미디어, 디자이너, uic 모듈 등으로 구성되어 있으며, Qt4와 Qt5를 지원한다. PyQt를 사용하는 주요 애플리케이션으로는 Anki, Calibre, Dropbox, Spyder 등이 있다.

2. 역사

PyQt는 1998년 Riverbank Computing에 의해 처음 출시되었다.[7]

2009년 8월, 당시 Qt의 개발사인 Qt 소프트웨어를 소유하고 있던 노키아는 파이썬 바인딩을 LGPL 라이선스 하에 사용할 수 있도록 추진했다. 그러나 Riverbank Computing과의 합의에 이르지 못하자, 노키아는 유사한 기능을 제공하는 자체 바인딩인 PySide를 출시했다.[8]

3. 주요 구성 요소



PyQt는 GUI 프로그래밍, 네트워크 통신, 데이터베이스 연동, 멀티미디어 처리 등 다양한 기능을 수행하는 여러 모듈로 구성되어 있다. 주요 버전인 PyQt4와 PyQt5는 각각의 필요에 맞는 특정 모듈 세트를 포함하고 있으며, 이를 통해 개발자는 필요한 기능만 선택적으로 사용하여 애플리케이션을 개발할 수 있다.

3. 1. PyQt4

PyQt4는 다음과 같은 파이썬 모듈을 포함하고 있다.

; QtCore

: 이벤트 루프와 Qt의 시그널 및 슬롯 메커니즘을 갖춘 비GUI 클래스를 포함하고 있다. 이 모듈은 플랫폼에 의존하지 않도록 유니코드, 스레드, 맵 파일, 공유 메모리, 정규 표현식 등을 추상화한다.

; QtGui

: 많은 GUI 클래스를 포함하고 있다. 이 클래스들은 모델-뷰-컨트롤러 디자인 패턴을 기반으로 하는 많은 테이블, 트리, 리스트를 포함하고 있다. 또한, 수천 개의 아이템을 저장할 수 있는 정교한 2D 캔버스 위젯을 제공한다.

; QtNetwork

: UDP, TCP 클라이언트와 서버를 생성하기 위한 모듈이다. 이 모듈은 FTP 구현, HTTP 클라이언트, DNS 조회 클래스를 포함하고 있다. 네트워크 애플리케이션을 쉽게 개발할 수 있도록 제작되었다.

; QtOpenGL

: OpenGL을 사용하여 3D 그래픽을 렌더링하는 데 필요한 클래스를 포함하고 있다.

; QtSql

: 오픈 소스 및 프로프리에터리 SQL 데이터베이스를 다루기 위한 모듈이다. 이는 GUI 클래스에서 사용할 수 있는 데이터베이스 테이블용 편집 가능한 데이터 모델을 포함하고 있다. 또한, SQLite 구현도 포함하고 있다.

; QtSvg

: SVG 파일의 내용을 표시하기 위한 클래스를 포함하고 있다. SVG 1.2 Tiny의 정적 기능을 지원한다.

; QtXml

: Qt의 XML 파서에 SAX와 DOM 인터페이스를 구현하는 모듈이다.

; QtMultimedia

: 하위 레벨에서 멀티미디어 기능을 구현하기 위한 모듈이다. 응용 프로그램 개발자는 일반적으로 phonon 모듈을 사용한다.

; QtDesigner

: PyQt를 사용하여 Qt Designer를 확장하기 위한 클래스를 포함하고 있다.

; Qt

: 하나의 모듈에 위에 설명된 모든 모듈에 포함된 클래스를 통합한다. 따라서 Qt 모듈을 불러오면 특정 클래스가 포함되어 있는지 걱정할 필요가 없어진다는 장점이 있다. 하지만 하나의 모듈로 통합함으로써 애플리케이션의 메모리 사용량을 증가시키고, Qt 프레임워크 전체를 불러와야 하는 등의 단점이 생긴다. 이 통합된 모듈을 사용할지, 개별 모듈을 사용할지는 개인의 취향에 달려있다.

; uic

: Qt Designer로 만들어진 XML 파일을 처리하기 위한 지원을 구현한다. 여기에는 XML 파일을 로드하여 직접 렌더링하는 클래스와 나중에 실행하기 위해 XML 파일에서 파이썬 코드를 생성하는 클래스가 포함되어 있다.[9][14]

3. 2. PyQt5

PyQt5는 다음과 같은 파이썬 모듈을 포함하고 있다.

  • QtQml 모듈
  • QtQtuick 모듈
  • QtCore 모듈
  • QtGui 모듈
  • QtPrintSupport 모듈
  • QtWidgets 모듈
  • QGLContext 모듈
  • QGLFormat 모듈
  • QGLWidget 모듈
  • QtWebKit 모듈
  • QtWebKitWidgets 모듈

4. 예제 (Hello World)

KDE 플라즈마 4에서 실행된 결과


아래는 PyQt 6 버전으로 작성된 간단한 파이썬 코드로, 실행하면 화면에 작은 창을 표시한다.



#!/usr/bin/env python3

"""

여기서 필요한 import를 제공합니다.

기본 GUI 위젯은 QtWidgets 모듈에 있습니다.

"""

import sys

# PyQt6에서는 GUI 기본 위젯이 QtWidgets 모듈에 포함되어 있다.

from PyQt6.QtWidgets import QApplication, QWidget

# 모든 PyQt 애플리케이션은 QApplication 객체를 생성해야 한다.

app = QApplication([])

# QWidget 위젯은 PyQt의 모든 사용자 인터페이스 객체의 기본 클래스이다.

# 부모가 없는 위젯(parent=None)은 독립적인 창(window)으로 취급된다.

root = QWidget()

# resize() 메서드로 위젯의 크기를 가로 320px, 세로 240px로 조정한다.

root.resize(320, 240)

# setWindowTitle() 메서드로 창의 제목을 설정한다.

root.setWindowTitle("Hello, World!")

# show() 메서드로 위젯을 화면에 표시한다.

root.show()

# 애플리케이션의 메인 이벤트 루프를 시작한다.

# 사용자의 입력을 받고 이벤트를 처리하며, 창이 닫힐 때까지 실행된다.

# sys.exit()는 이벤트 루프 종료 시 애플리케이션을 완전히 종료하기 위해 사용된다.

sys.exit(app.exec())



아래는 이전 버전인 PyQt 4로 작성된 동일한 기능의 코드이다. PyQt 6와 비교하여 모듈 구조(`QtGui` vs `QtWidgets`)나 메서드 이름(`exec_()` vs `exec()`) 등에서 차이가 있음을 알 수 있다.



#! /usr/bin/env python

# -*- coding: utf-8 -*-

#

# 필요한 import를 제공합니다.

# 기본적인 GUI 위젯은 QtGui 모듈에 있습니다.

import sys

# PyQt4에서는 GUI 기본 위젯이 QtGui 모듈에 포함되어 있었다.

from PyQt4.QtGui import *

# 모든 PyQt4 응용 프로그램은 QApplication 객체를 생성해야 한다.

a = QApplication(sys.argv)

# QWidget 위젯은 PyQt4의 모든 사용자 인터페이스 객체의 기본 클래스이다.

# 부모가 없는 위젯은 창으로 취급된다.

w = QWidget()

# resize() 메서드로 위젯의 크기를 조정한다.

w.resize(320, 240)

# setWindowTitle() 메서드로 창의 제목을 설정한다.

w.setWindowTitle("Hello, World!")

# show() 메서드로 위젯을 화면에 표시한다.

w.show()

# 애플리케이션의 메인 이벤트 루프를 시작한다. PyQt4에서는 exec_() 메서드를 사용했다.

sys.exit(a.exec_())


5. PyQt를 사용하는 주요 애플리케이션


  • Anki: 간격 반복 학습 플래시 카드 프로그램
  • Calibre: 전자책 관리 애플리케이션
  • Dropbox: 파일 호스팅 서비스
  • Eric Python IDE: 파이썬의 통합 개발 환경
  • Frescobaldi: LilyPond 음악 파일의 악보 편집기
  • GNS3: 네트워크 소프트웨어 에뮬레이터
  • Kodos: 파이썬 정규 표현식 디버거
  • Leo: 개요 작성기 및 리터럴 프로그래밍 편집기
  • Ninja-IDE: 확장 가능한 오픈 소스 파이썬 IDE
  • OpenLP: 오픈 소스 가사 프로젝션 프로그램
  • OpenShot: 비디오 편집 프로그램
  • Orange: 데이터 마이닝 및 시각화 프레임워크
  • Puddletag: 오픈 소스, 크로스 플랫폼 ID3 태그 편집기
  • QGIS: 무료 소프트웨어 데스크톱 지리 정보 시스템(GIS) 애플리케이션
  • qutebrowser: Vim 스타일의 키 바인딩과 최소한의 GUI를 갖춘 웹 브라우저
  • qt-recordMyDesktop: recordMyDesktop용 Qt4 프론트 엔드
  • Spyder: 파이썬 데이터 과학 IDE
  • TortoiseHg: Mercurial 소스 관리 프로그램(Hg)의 그래픽 인터페이스
  • Veusz: 과학적 플로팅 애플리케이션

참조

[1] 웹사이트 PyQt4 Download http://www.riverbank[...] Riverbankcomputing 2010-04-19
[2] 웹사이트 Riverbank | Commercial | License FAQ http://www.riverbank[...] Riverbankcomputing.com 2015-06-24
[3] 웹사이트 What is PyQt? http://www.riverbank[...] Riverbank Computing 2014-09-18
[4] 웹사이트 PyQt v4 - Python Bindings for Qt v4 https://web.archive.[...] Riverbankcomputing 2010-04-17
[5] 웹사이트 QSqlDatabase Class Reference http://pyqt.sourcefo[...] 2014-09-25
[6] Wiki PythonInfo Wiki https://wiki.python.[...]
[7] 서적 Python Web Scraping https://books.google[...] Packt Publishing Ltd 2017-05-30
[8] 웹사이트 PyQt5 vs PySide2: What's the difference between the two Python Qt libraries? https://www.pythongu[...] 2019-06-21
[9] 웹사이트 Riverbank | Software | PyQt | What is PyQt? http://www.riverbank[...] Riverbankcomputing.co.uk 2010-04-15
[10] 간행물 Differences Between PyQt4 and PyQt5 https://web.archive.[...] 2014-09-18
[11] 뉴스 https://www.riverban[...]
[12] 웹사이트 PyQt4 Download http://www.riverbank[...] Riverbankcomputing 2010-04-19
[13] 웹사이트 Riverbank | Software | PyQt | License http://www.riverbank[...] Riverbankcomputing.co.uk 2009-09-03
[14] 웹사이트 Riverbank | Software | PyQt | What is PyQt? http://www.riverbank[...] Riverbankcomputing.co.uk 2010-04-15
[15] 웹사이트 PyQt v4 - Python Bindings for Qt v4 http://www.riverbank[...] Riverbankcomputing 2010-04-17
[16] Wiki PythonInfo Wiki http://wiki.python.o[...]
[17] 웹사이트 PySide has been released – PySide – Python for Qt http://www.pyside.or[...] Pyside.org 2009-08-18
[18] 웹사이트 FAQ – PySide – Python for Qt http://www.pyside.or[...] Pyside.org 2009-09-03
[19] 웹인용 PyQt4 Download http://www.riverbank[...] Riverbankcomputing 2010-04-19
[20] 웹인용 Riverbank | Commercial | License FAQ http://www.riverbank[...] Riverbankcomputing.com 2015-06-24



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com