MCPcopy
hub / github.com/PyQt5/PyQt / NotificationWindow

Class NotificationWindow

Demo/Notification.py:157–242  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

155
156
157class NotificationWindow(QListWidget):
158 _instance = None
159
160 def __init__(self, *args, **kwargs):
161 super(NotificationWindow, self).__init__(*args, **kwargs)
162 self.setSpacing(20)
163 self.setMinimumWidth(412)
164 self.setMaximumWidth(412)
165 QApplication.instance().setQuitOnLastWindowClosed(True)
166 # 隐藏任务栏,无边框,置顶等
167 self.setWindowFlags(self.windowFlags() | Qt.Tool |
168 Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
169 # 去掉窗口边框
170 self.setFrameShape(self.NoFrame)
171 # 背景透明
172 self.viewport().setAutoFillBackground(False)
173 self.setAttribute(Qt.WA_TranslucentBackground, True)
174 # 不显示滚动条
175 self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
176 self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
177 # 获取屏幕高宽
178 rect = QApplication.instance().desktop().availableGeometry(self)
179 self.setMinimumHeight(rect.height())
180 self.setMaximumHeight(rect.height())
181 self.move(rect.width() - self.minimumWidth() - 18, 0)
182
183 def removeItem(self, item):
184 # 删除item
185 w = self.itemWidget(item)
186 self.removeItemWidget(item)
187 item = self.takeItem(self.indexFromItem(item).row())
188 w.close()
189 w.deleteLater()
190 del item
191
192 @classmethod
193 def _createInstance(cls):
194 # 创建实例
195 if not cls._instance:
196 cls._instance = NotificationWindow()
197 cls._instance.show()
198 NotificationIcon.init()
199
200 @classmethod
201 def info(cls, title, message, callback=None):
202 cls._createInstance()
203 item = QListWidgetItem(cls._instance)
204 w = NotificationItem(title, message, item, cls._instance,
205 ntype=NotificationIcon.Info, callback=callback)
206 w.closed.connect(cls._instance.removeItem)
207 item.setSizeHint(QSize(cls._instance.width() -
208 cls._instance.spacing(), w.height()))
209 cls._instance.setItemWidget(item, w)
210
211 @classmethod
212 def success(cls, title, message, callback=None):
213 cls._createInstance()
214 item = QListWidgetItem(cls._instance)

Callers 1

_createInstanceMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected