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개의 아이콘이 있다고 한다.
- 모든 아이콘을 확인해 보고 싶다면 아래의 링크를 참고한다.
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_())
참고 사이트
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 |