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
'Framework > PyQt' 카테고리의 다른 글
[PyQt] 간단한 CRUD(Create, Read, Update, Delete) 프로그램 (0) | 2023.07.18 |
---|---|
[PyQt] QTimer.singleShot 함수를 특정 시간 간격으로 여러번 실행하는 방법 (0) | 2023.07.16 |
[PyQt] QAction에서 triggered 시그널을 사용할 때, 인자를 triggered 메서드에 전달하는 방법 (0) | 2023.07.08 |
[PyQt] QClipboard.Clipboard와 QClipboard.Selection의 차이점 (0) | 2023.07.07 |
[PyQt] style().standardIcon() 메서드에서 사용할 수 있는 아이콘 종류 및 숫자 (1) | 2023.05.17 |
[PyQt] PyQt5에서 QWebView 사용하기 (0) | 2023.05.16 |
[PyQt] 구글 번역기 프로그램 만들기 & "'NoneType' object has no attribute 'group'" 이슈 해결하기 (0) | 2023.05.15 |
[PyQt] self.width()와 self.height()를 사용할 때, 실행창이 튕기는 경우 해결 방법 (0) | 2023.05.14 |