728x90
728x90

PyQt 커스텀 아이콘 패키지(fugueicons) 설치 및 사용해보기

들어가며

  • PyQt에는 기본 아이콘 팩이 있지만(참고), 아이콘의 종류가 적다.
  • 그래서 커스텀 아이콘 패키지(fugueicons)를 설치하여 사용할 수 있다.

 

방법

pyqt5-fugeicons 패키지 설치하기

  • 터미널에서 다음 명령을 실행하여 pyqt5-fugeicons 패키지를 설치한다.
> pip install pyqt5-fugueicons

 

아이콘 사용해보기

  • 다음과 같이 모듈을 불러와fugeicons의 아이콘을 사용해볼 수 있다.
import pyqt5_fugueicons as fugue

 

  • icon() 메서드를 사용하여 아이콘을 불러올 수 있다.
  • PyQt 기본 아이콘팩의 아이콘을 사용하는 방법과 유사하다.
    • QAction(self.style().standardIcon(icon), "example", self)
import pyqt5_fugueicons as fugue
from PyQt5 import QtWidgets
icon = fugue.icon('application-blue')
button = QtWidgets.PushButton(icon, 'application-blue')

 

그림자 있는 아이콘 사용하기

  • fugeicons 아이콘팩의 아이콘에 그림자를 추가할 수도 있다.
  • 함수의 인자(shadowless)를 True로 설정해줄 경우, 아이콘의 그림자를 없애고, False를 설정할 경우 아이콘에 그림자를 추가한다.
    • 기본값False로, shadowless 인자를 설정해주지 않으면 그림자 있는 아이콘이 생성된다.
import pyqt5_fugueicons as fugue
icon = fugue.icon('application-blue', shadowless=True)

 

아이콘 사이즈 설정하기

  • size 인자를 사용하여 fugeicons 아이콘팩의 아이콘의 사이즈를 설정해줄 수도 있다.
  • fallback_size 인자를 사용할 경우, 지정된 크기의 아이콘이 발견되지 않을 경우 다시 작은 사이즈의 아이콘으로 출력되도록한다.
import pyqt5_fugueicons as fugue
# 24x24 크기의 아이콘이 발견되지 않을 경우, 16x16 크기의 아이콘으로 출력한다.
icon = fugue.icon('application-blue', size=24, fallback_size=True)

 

아이콘 이름 확인해보기

  • 다음과 같이 코드를 실행하여 fugeicons 아이콘팩의 아이콘 이름들을 확인해볼 수 있다.
for name in fugue.iconNames():
print(name)

 

애니메이션 아이콘 사용하기

  • movie() 메서드를 사용하여 애니메이션 아이콘을 사용할 수 있다.
    • movie() 메서드는 icon() 메서드와 비슷하지만, 16x16 또는 24x24 크기의 아이콘만 사용할 수 있기 때문에 사이즈(size)를 16 또는 24로 설정해주어야 한다.
  • QMovie 클래스는 Qt 프레임워크에 GIF가 출력될 수 있도록 해준다.
import pyqt5_fugueicons as fugue
from PyQt5 import QtWidgets
movie = fugue.movie('terminal')
movie.start()
label = QtWidgets.QLabel()
label.setMovie(movie)

 

  • movieNames() 메서드를 사용하면 모든 애니메이션 아이콘의 이름들을 확인할 수 있다.
for name in fugue.movieNames():
print(name)
application-terminal
construction
counter
counter-count
counter-count-up
lock-warning
selection
selection-input
selection-select
selection-select-input
terminal
terminal-medium
terminal-network
ui-progress-bar-indeterminate

 

아이콘 확인해보기

기본 아이콘

  • 약 3,570개의 아이콘이 있다고 한다.
  • 모든 아이콘을 확인해 보고 싶다면 아래의 링크를 참고한다.
 

Fugue Iconpack (3570 icons) | Yusuke Kamiyamane

 

www.iconarchive.com

import sys
import pyqt5_fugueicons as fugue
from PyQt5.QtWidgets import QApplication, QGridLayout, QPushButton, QScrollArea, QWidget
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
self.setWindowTitle("PyQt5 fugueicons Icon Checker")
self.setGeometry(100, 100, 800, 600)
iconNames = sorted([attr for attr in fugue.iconNames()])
layout = QGridLayout()
for n, name in enumerate(iconNames):
btn = QPushButton(f"({name})")
icon = fugue.icon(name, shadowless=True, size=16, fallback_size=True)
btn.setIcon(icon)
layout.addWidget(btn, n // 6, n % 6)
scroll_area = QScrollArea()
scroll_area.setWidgetResizable(True)
scroll_content = QWidget()
scroll_content.setLayout(layout)
scroll_area.setWidget(scroll_content)
main_layout = QGridLayout(self)
main_layout.addWidget(scroll_area)
app = QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())

 

애니메이션 아이콘

import sys
import pyqt5_fugueicons as fugue
from PyQt5.QtWidgets import QApplication, QGridLayout, QPushButton, QScrollArea, QWidget, QLabel, QHBoxLayout
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
self.setWindowTitle("PyQt5 fugueicons Animated Icon Checker")
self.setGeometry(100, 100, 800, 600)
iconNames = sorted([attr for attr in fugue.movieNames()])
layout = QGridLayout()
for n, name in enumerate(iconNames):
movieIcon = fugue.movie(name, size=16, fallback_size=True) # 16 or 24 are only acceptable for size.
movieIcon.start()
label = QLabel()
label.setMovie(movieIcon)
iconName = QPushButton(f"({name})")
miniLayout = QHBoxLayout()
miniLayout.addWidget(iconName)
miniLayout.addWidget(label)
layout.addLayout(miniLayout, n // 3, n % 3)
scroll_area = QScrollArea()
scroll_area.setWidgetResizable(True)
scroll_content = QWidget()
scroll_content.setLayout(layout)
scroll_area.setWidget(scroll_content)
main_layout = QGridLayout(self)
main_layout.addWidget(scroll_area)
app = QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())

 

 

참고 사이트

 

pyqt5-fugueicons

Fugue Icons for PyQt5

pypi.org

 

728x90
728x90

PyQt 커스텀 아이콘 패키지(fugueicons) 설치 및 사용해보기들어가며방법pyqt5-fugeicons 패키지 설치하기아이콘 사용해보기그림자 있는 아이콘 사용하기아이콘 사이즈 설정하기아이콘 이름 확인해보기애니메이션 아이콘 사용하기아이콘 확인해보기기본 아이콘애니메이션 아이콘참고 사이트