使用pynotify和pyqt开发桌面系统托盘版的通知提醒

上篇已经完成了一个通知提醒程序,但是还有些不足。
功能呆板,不能很方便的在不需要的时候关闭。那么就是接下去的系统托盘版本的提醒出炉了。
需求:
1. 通知功能不可少
2. 不再是个Console程序
2. 界面上能关闭
3. 好看点.
原材料: pynotifypyqt
热点:
1. 需要一个定时获取通知的机制 -> 采用定时器的方式进行.
2. 提醒方式依旧采用桌面通知的方式
3. 无主界面,但是在系统托盘处存在。
4. 通过系统托盘处的菜单选择可退出。
开工
1. 启动qtdesigner,创建一个默认的光版主窗口就好。
2. 上代码

class Alert(QMainWindow,Ui_desknotify):
  def __init__(self,parent=None):
    super(Alert, self).__init__(parent)
    self.setupUi(self)
    #--systray--
    self._set_systray()
    #--set timer--
    QTimer.singleShot(50000,self._timeout)  #每50秒一次
  def _timeout(self):
    #alert something.
    self._dosomething()
    QTimer.singleShot(50000,self._timeout) #在任务完成后,再次激发.
  def _dosomething(self):
    pynotify.init("Notify")
    n = pynotify.Notification("Hello DL",'More and More<strong><a href="http://blog.xgarden.net">...</a></strong>')
    n.show()
  def _set_systray(self):
    quit = QAction(QString("&Quit"),self);
    self.connect(quit,SIGNAL("triggered()"),self.close)
    menu = QMenu(self)  #生成一个系统托盘处的菜单.就一个Quit
    menu.addAction(quit);
    self.icon = QSystemTrayIcon(loadICON(),self)  #加载系统托盘处的图标
    self.icon.setToolTip(QString(u"A Alert Coming..."))
    self.icon.setContextMenu(menu)
    self.icon.show()

效果不赖,上图看看.
运行效果.

鼠标Tips效果

菜单

下载源代码在此

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。