-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcustom_icons.py
More file actions
50 lines (41 loc) · 1.47 KB
/
Copy pathcustom_icons.py
File metadata and controls
50 lines (41 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from PyQt5.QtGui import QPainter, QPen, QIcon, QPixmap
from PyQt5.QtCore import Qt
class IconGenerator:
@staticmethod
def create_icon(size, draw_func, color=Qt.white):
pixmap = QPixmap(size)
pixmap.fill(Qt.transparent)
painter = QPainter(pixmap)
painter.setRenderHint(QPainter.Antialiasing)
painter.setPen(QPen(color, 2, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
draw_func(painter, pixmap.rect())
painter.end()
return QIcon(pixmap)
@staticmethod
def create_minimize_icon(size):
def draw(painter, rect):
margin = int(rect.height() * 0.4)
painter.drawLine(
int(rect.left() + 2),
int(rect.height() - margin),
int(rect.right() - 2),
int(rect.height() - margin)
)
return IconGenerator.create_icon(size, draw)
@staticmethod
def create_close_icon(size):
def draw(painter, rect):
margin = int(rect.width() * 0.2)
painter.drawLine(
margin,
margin,
int(rect.width() - margin),
int(rect.height() - margin)
)
painter.drawLine(
margin,
int(rect.height() - margin),
int(rect.width() - margin),
margin
)
return IconGenerator.create_icon(size, draw, Qt.red)