DEEP.I - Lab

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

반응형

Python/PyQt 7

[Python] PyQt에서 마우스 버튼 클릭 반응형 효과 만들기

Concept PC 환경에서 마우스는 이제 대체할 수 없는 강력한 UI 도구입니다. 모바일과 같이 NUI를 적용하려는 다양한 시도가 있었지만, 아직까지 대체 불가능인 것 같습니다. 우리는 프로그램에서 버튼을 클릭할 때 마우스 커서를 버튼 UI에 올려 놓게되며, 이때 커서의 반응 효과를 통해 클릭이 가능한 버튼은지, 클릭이 된 건지를 판단합니다. PyQt에도 기본적으로 버튼의 클릭 이벤트는 CSS로 구현되지만, 마우스의 효과는 코드를 통해 구현되고 있습니다. SourceCode def initUI(self): # 버튼 생성 self.BUTTON = QPushButton(self) # 버튼 커서 이벤트 지정 self.BUTTON.setCursor(QtGui.QCursor(QtCore.Qt.PointingHa..

Python/PyQt 2021.03.12

[Python] PyQt5에서 URL 링크 만들기 (하이퍼링크 버튼)

Concept 이번 포스팅은 pyqt 기반 GUI 프로그램에서 활용 가능한 URL 링크 버튼 만들기 입니다. URL 링크는 webbrowser 라이브러리를 QtButton과 연동하여 웹 페이지 링크를 실행하는 방식으로 구현됩니다. SourceCode import webbrowser class APP(QMainWindow): def __init__(self): # APP CODE # APP CODE # 버튼에 링크 추가하기 self.button.clicked.connect(lambda: webbrowser.open('링크')) # 텍스트 (라벨)에 링크 추가하기 self.label.setText('텍스트내용') self.label.setOpenExternalLinks(True) Application You..

Python/PyQt 2021.02.23

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

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를 ..

Python/PyQt 2020.12.31

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

1. Concept PyQt로 UI를 구성하다 보면 제목 표시줄 (Title Header)가 없는 위젯을 만드는 경우가 있습니다. 이때 생성된 위젯은 제목 표시줄이 없다면 일반적으로 이동이나 크기 변경이 불가능합니다. [mousePressEvent - mouseMoveEvent - mouseReleaseEvent] 통해 위젯 내 오브젝트에서 마우스로 이동하기 위한 예제입니다. 지난 포스팅에서 다룬 그림판 GUI의 변형입니다. deep-eye.tistory.com/13?category=442845 [Python] PyQt를 이용하여 마우스로 직선 그리기 PyQt5를 이용한 마우스로 직선 그리기 python의 PyQt을 이용하여 일반적인 그림판과 같이 다양한 도형체를 그릴수 있습니다. 이러한 작업이 프로그램..

Python/PyQt 2020.12.30

[Python] PyQt5 리소스 파일 Import error 해결 방법 "No module named 'icon_rc'"

파이썬에서 GUI 작업으로 활용되는 QT에서는 리소스 파일을 통해 이미지 파일을 관리할 수 있습니다. 리소스 파일 qrc을 생성하고 py로 변환하여 메인 코드에 import하는 과정으로 조금 복잡합니다. 저는 이상하게도 메인 코드에 변환된 py 확장자의 리소스 파일을 import 하게 되면 종종 해당 파일이 없다고 No module named 'icon_rc' 오류가 떴습니다. 메인 파이썬 프로그램에서는 import가 정상적으로 되지만, QT Designer로 생성한 ui 파일엔 변환된 정보가 없어서 발생하는 문제인것같습니다. 매 작업때마다 산발적으로 발생하는 오류에 지쳐 이제는 초기화 단계에서 함수형태로 코드를 입력해 ui 확장자 내에서 지정된 리소스 파일의 경로를 수정해주고 있습니다. import g..

Python/PyQt 2020.12.01

[Python] PyQt 에서 로딩(애니메이션) 화면 구현하기

GUI 기반 프로그램에서는 직관적이고 편리한 UI/UX 구성도 중요하지만, 프로그램에서 특정 액션이 발생할 때 사용자에게 지금 어떤 '상황'인지 알려주는 상호작용 역시 매우 중요합니다. 예를 들어, 버튼 클릭은 된건지, 접속은 된건지 현재 액션에 대한 반응으로 사용자가 느낄수 있어야 합니다. 이번 포스팅에서는 PyQt에서 간단하게 이벤트가 입력되었을때 로딩중이다라는것을 보여 줄 수 있는 창을 한번 구현해보겠습니다. 1. 로딩 이미지 파일 (GIF, SVG, APNG) 만들기 동적 로딩화면 구현을 위해서는 GIF, SVG, APNG 등과 같이 애니메이션 효과가 가능한 파일이 필요합니다. 저는 아래 사이트에서 무료로 제작 가능한 로딩 이미지를 받아서 사용했습니다. 이번 포스팅에서는 GIF를 활용해보겠습니다...

Python/PyQt 2020.11.23

[Python] PyQt를 이용하여 마우스로 직선 그리기

PyQt5를 이용한 마우스로 직선 그리기 python의 PyQt을 이용하여 일반적인 그림판과 같이 다양한 도형체를 그릴수 있습니다. 이러한 작업이 프로그램에 녹아들어 유저 인터페이스와 연결되기 위해서는 그림 1과 같이 그리고 있는 시각적인 효과가 중요합니다. 오늘은 PyQt 내부 QPainter 클래스로 간단한 그림판을 구현해보도록 하겠습니다. 1. Screen.py (기본 UI 만들기) from PyQt5 import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import* class Screen(QMainWindow): def setupUi(self): self.resize(800, 600) self.cent..

Python/PyQt 2020.10.20
반응형