-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnotifierP.py
More file actions
108 lines (88 loc) · 3.54 KB
/
notifierP.py
File metadata and controls
108 lines (88 loc) · 3.54 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
from PyQt5.QtWidgets import (QWidget,
QLabel,
QPushButton,
QGridLayout,
QVBoxLayout,
QDesktopWidget,
QApplication)
from PyQt5.QtCore import pyqtSignal, Qt
from PyQt5.QtGui import QIcon, QPixmap
from textwrap import wrap
# ""
class Message(QWidget):
# ""
def __init__(self, title, message, parent=None):
QWidget.__init__(self, parent)
self.setLayout(QGridLayout())
self.titleLabel = QLabel(title, self)
self.titleLabel.setStyleSheet(
"font-family: 'Roboto', sans-serif; font-size: 14px; font-weight: bold; padding: 0; color: white;")
self.messageLabel = QLabel(message, self)
self.messageLabel.setStyleSheet(
"font-family: 'Roboto', sans-serif; font-size: 12px; font-weight: normal; padding: 0; color: white;")
self.buttonClose = QPushButton(self)
icon = QIcon()
icon.addPixmap(QPixmap("extra/close2.png"), QIcon.Normal, QIcon.Off)
self.buttonClose.setIcon(icon)
self.buttonClose.setFlat(True)
self.buttonClose.setFixedSize(16, 16)
self.layout().addWidget(self.titleLabel, 0, 0)
self.layout().addWidget(self.messageLabel, 1, 0)
self.layout().addWidget(self.buttonClose, 0, 1, 2, 1)
# ""
class Notification(QWidget):
doubleClick = pyqtSignal(int)
# ""
def __init__(self, parent=None):
super(QWidget, self).__init__(parent)
self.setWindowFlags(Qt.FramelessWindowHint |
Qt.WindowStaysOnTopHint | Qt.ToolTip)
resolution = QDesktopWidget().screenGeometry(-1)
self.screenWidth = resolution.width()
self.screenHeight = resolution.height()
self.nMessages = 0
self.setStyleSheet("background-color: rgb(33, 52, 80);")
self.mainLayout = QVBoxLayout(self)
# ""
def setNotify(self, title, message):
if len(message) > 42:
w = wrap(message, 42, break_long_words=True)
message = f"{w[0]}..."
m = Message(title, message, self)
self.mainLayout.addWidget(m)
m.buttonClose.clicked.connect(self.onClicked)
self.nMessages += 1
self.show()
width = self.frameGeometry().width()
self.move(self.screenWidth - width - 20, 20)
# ""
def onClicked(self):
self.mainLayout.removeWidget(self.sender().parent())
self.sender().parent().deleteLater()
self.nMessages -= 1
self.adjustSize()
if self.nMessages == 0:
self.close()
# ""
def mouseDoubleClickEvent(self, event):
self.doubleClick.emit(1)
if __name__ == '__main__':
import sys
class Example(QWidget):
counter = 0
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setLayout(QVBoxLayout())
btn = QPushButton("Send Notify", self)
self.layout().addWidget(btn)
self.notification = Notification()
btn.clicked.connect(self.notify)
def notify(self):
self.counter += 1
print(self.counter)
self.notification.setNotify("Title{}".format(self.counter),
"messageeeeeeeee{}".format(self.counter))
app = QApplication(sys.argv)
w = Example()
w.show()
sys.exit(app.exec_())