前几天看到一个python框架win10toast,可以作为windows的消息通知功能。通过设置通知间隔,可以实现一些事件通知功能。比如在我们埋头写代码的过程中,它可以提醒我们按时喝水。文末获取源码>>>界面布局依然采用pyqt5的UI设计。使用界面直接设置你想要提示的内容和时间,然后你就可以定时给我们发送通知了。UI相关的部分还是这些常用的组件包。fromPyQt5.QtGuiimport*#UI界面相关fromPyQt5.QtCoreimport*#核心组件包fromPyQt5.QtWidgetsimport*#UI布局相关模块界面主题相关模块,这里是黑色模块主题。fromqdarkstyleimportload_stylesheet_pyqt5应用相关模块。importsysimportos下面几个模块中唯一比较特别的是win10toast模块是用来做windows通知的,另外还有一个timer是用在python线程中的。fromwin10toastimportToastNotifier#导入系统通知对象importtime#系统时间模块importdatetimefromthreadingimportTimer#定时器首先在UI界面中写出布局和界面组件。界面比较简单,使用了两种布局,一种是Form表单布局,一种是竖排布局。classWinNotify(QWidget):def__init__(self):super(WinNotify,self).__init__()self.init_ui()definit_ui(self):self.setWindowTitle('windows通知管理器公众号:[Python集中营]')self.setWindowIcon(QIcon('notification.ico'))self.setFixedWidth(550)self.notify_subject_label=QLabel()self.notify_subject_label.setText('通知主题')self.notify_subject_text=QLineEdit()self.notify_subject_text。setPlaceholderText('请输入通知主题')self.notify_current_label=QLabel()self.notify_current_label.setText('通知内容')self.notify_current_text=QLineEdit()self.notify_current_text.setPlaceholderText('请输入通知内容')self.notify_time_label=QLabel()self.notify_time_label.setText('通知间隔')self.notify_time_combox=QComboBox()self.notify_time_combox.addItems(['10|minute','30|minute','45|minute','60|minute','120|min'])self.notify_icon_path=QLineEdit()self.notify_icon_path.setPlaceholderText('通知图标(*.ico)')self.notify_icon_btn=QPushButton()self.notify_icon_btn.setText('选择图标')self.notify_icon_btn.clicked.connect(self.notify_icon_btn_click)self.start_btn=QPushButton()self.start_btn.setText('开启通知吧!')self.start_btn.clicked.connect(self.start_btn_click)form=QFormLayout()form.addRow(self.notify_subject_label,self.notify_subject_text)form.addRow(self.notify_current_label,self.notify_current_text)form.addRow(self.notify_time_label,self.notify_time_combox)form.addRow(self.notify_icon_path,self.notify_icon_btn)vbox=QVBoxLayout()vbox.addLayout(form)vbox.addWidget(self.start_btn)self.thread_=WorkThread(self)self.setLayout(vbox)defnotify_icon_btn_click(self):file=QFileDialog.getOpenFileName(self,os.getcwd(),'打开图片','ICO文件(*.ico)')print(file[0])self.notify_icon_path.setText(file[0])defstart_btn_click(self):self.start_btn.setEnabled(False)self.thread_.start()main函数启动应用时,在app的布局中添加黑色主题。setStyleSheet(load_stylesheet_pyqt5())线程运行相关部分,通过继承QThead类编写子线程。类WorkThread(QThread):def__init__(self,parent=None):super(WorkThread,self).__init__(parent)self.parent=parentself.notify=ToastNotifier()self.working=Truedef__del__(self):self.working=Falseself.wait()defrun(self):self.show_toast()defshow_toast(self):notify_head=self.parent.notify_subject_text.text()notify_text=self.parent.notify_current_text.text()notify_ico=self.parent.notify_icon_path.text()notify_sen=self.parent.notify_time_combox.currentText().split('|')[0]notify_sen=int(notify_sen)*60print('当前时间:%s'%(datetime.datetime.now().strftime('%Y-%m-%d%H:%M:%S')))self.notify.show_toast(f"{notify_head}",f"{notify_text}",duration=5,threaded=True,icon_path=notify_ico)而self.notify.notification_active():time.sleep(0.005)timer=Timer(notify_sen,self.show_toast)Timer.start()公众号回复“通知管理器”获取完整源码...我是【Python集中营】,很高兴看到最后,我是Python知识分享公众号,我希望能得到大家的关注~【过往优秀】gif动态图片生成器,多张图片组合生成动画...python中几种常见的数据处理操作,一行代码即可完成!过年了,用PyQt5生成一对春联...记录python中前十%占位符对应的格式...PyQt5最小化到托盘,升级小闹钟...
