DEEP.I - Lab

오프라인 공간의 지능화를 꿈꾸는 딥아이 연구실입니다.

Python/PyQt

[Python] PyQt5를 이용한 GUI 환경 구축하기 #1 QMainWindow 실행

Jongwon Kim 2020. 12. 31. 13:47
반응형

1. Concept

파이썬의 GUI 라이브러리 중 하나인 PyQt를 이용한 GUI 프로그램 구현입니다. QT-Designer를 통해 UI를 만든 다음 Python 코드로 쉽게 연동해보도록 하겠습니다.

 

2. SourceCode 

1. 가상 환경 구축 및 Spyder 설치

# 가상환경 생성 [python 3.8버전]
conda create -n py38_qt python==3.8

# 가상환경 실행
activate py38_qt

# Spyder + QT 설치
conda install spyder

Spyder를 설치하면 GUI 구현을 위한 의존성 패키지가 함께 설치되므로 편리합니다. 설치가 완료되면 콘솔 창에 designer를 입력 후 엔터를 눌러 qt-designer를 실행합니다.

 

 

2. Qt-Designer를 이용한 Simple UI 제작

 

그림 1. 초기화면

 

Qt-Designer의 초기화면에서 Main Window를 클릭해주면 기본적인 UI 제작을 위한 Form이 생성됩니다. 생성된 Form에는 메뉴바와 상태바가 포함되어 있습니다. 아직은 불필요하니 우클릭 또는 우측의 객체 탐색기에서 해상 객체를 삭제해줍니다.

 

그림 2. statusbar 삭제
그림 3. menubar 삭제

 

간단한 타이머 구현을 위해 좌측에 있는 위젯 상자에서 LCD Number 위젯을 클릭 후, 작성 중인 Form에 드레그 해줍니다. 위치와 크기는 지정된 이후에도 마우스나 우측의 속성 값을 통해 수정할 수 있습니다. 현재 위치가 애매하므로 레이아웃 설정을 통해 전체 form에 맞게 반응형으로 변경해줍니다.

 

익숙해지기 위해 다양한 위젯이나 레이아웃 등을 추가하면서 연습하시는 것도 좋습니다. 모든 작업이 완료되었다면 Python 연동을 위해 코드를 작성중인 경로에 배치가 완료된 Form을 저장해줍니다.

 

 

그림 4. Form에 추가된 위젯
그림 5. 우클릭 후 배치를 지정해준다.

 

3. Python GUI 코드 작성

# -*- coding: utf-8 -*-
"""
@author: Deep.I Inc. @Jongwon Kim
Revision date: 2020-12-30
See here for more information :
    https://deep-eye.tistory.com
    https://deep-i.net
"""

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QMainWindow,QApplication

# Designer로 만든 UI 경로지정
FROM_CLASS = uic.loadUiType("ui.ui")[0]

# GUI CLASS 생성
class Windows(QMainWindow,FROM_CLASS):

    def __init__(self):
        super().__init__()

        # UI 설정
        self.setupUi(self) 
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ShowApp = Windows()
    sys.exit(app.exec_())

파이썬에서 UI를 작성할 수도 있지만, 프로그램이 난잡해 지기 때문에 저는 Designer를 통해 [UI 파일 제작 <-> 파이썬 코드로 백엔드 작업] 의 프로세스를 선호하고 있습니다. 

 

3. Application

deep-eye.tistory.com/43

 

[PyQt] 제목 표시줄 없는 Widget을 마우스로 이동시키기

1. Concept PyQt로 UI를 구성하다 보면 제목 표시줄 (Title Header)가 없는 위젯을 만드는 경우가 있습니다. 이때 생성된 위젯은 제목 표시줄이 없다면 일반적으로 이동이나 크기 변경이 불가능합니다. [m

deep-eye.tistory.com

 

Your Best AI Partner DEEP.I
AI 바우처 공급 기업
객체 추적 및 행동 분석 솔루션 | 제조 생산품 품질 검사 솔루션 | AI 엣지 컴퓨팅 시스템 개발

인공지능 프로젝트 개발 외주 및 상담
E-mail: contact@deep-i.ai
Site: www.deep-i.ai
 

딥아이 DEEP.I | AI 기반 지능형 기업 솔루션

딥아이는 AI 기술의 정상화라는 목표를 갖고, 최첨단 딥러닝 기술 기반의 기업 솔루션을 제공하고 있으며, 이를 통해 고도의 AI 기반 객체 탐지, 분석, 추적 기능을 통합하여 다양한 산업 분야에

deep-i.ai

 

 

 

반응형