基于PyQt5怎么制作一个windows通知管理器
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,本篇内容介绍了"基于PyQt5怎么制作一个windows通知管理器"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2025年11月09日基于PyQt5怎么制作一个windows通知管理器
本篇内容介绍了"基于PyQt5怎么制作一个windows通知管理器"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
python框架win10toast,它可以用来做windows的消息通知功能。通过设定通知的间隔时间来实现一些事件通知的功能,比如可以可以提醒一头扎进代码编写过程的我们按时喝水。
界面布局采用的依旧是pyqt5的ui设计,使用界面化直接设置好想要提示的内容和时间就可以给我们定时的发通知了。
UI相关的部分的还是这几个常用的组件包。
from PyQt5.QtGui import * # UI 界面相关from PyQt5.QtCore import * # 核心组件包from PyQt5.QtWidgets import * # UI 布局相关模块
界面主题相关的模块,这里采用的是黑色的模块主题。
from qdarkstyle import load_stylesheet_pyqt5
应用相关的模块。
import sysimport os
下面几个模块中唯一比较特殊的就是win10toast模块是用来做windows通知的,还有一个用到了python线程中的定时器。
from win10toast import ToastNotifier # 导入系统通知对象import time # 系统时间模块import datetimefrom threading import Timer # 定时器
首先还是将UI界面中的布局和界面组件相关的部分写出来,界面也比较简单,采用了两种布局一种是Form表单布局、另外一个是垂直布局。
class WinNotify(QWidget): def __init__(self): super(WinNotify, self).__init__() self.init_ui() def init_ui(self): self.setWindowTitle('windows通知管理器 公众号:[Python 集中营]') self.setWindowIcon(QIcon('通知.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|分钟', '30|分钟', '45|分钟', '60|分钟', '120|分钟']) 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) def notify_icon_btn_click(self): file = QFileDialog.getOpenFileName(self, os.getcwd(), '打开图片', 'ICO File(*.ico)') print(file[0]) self.notify_icon_path.setText(file[0]) def start_btn_click(self): self.start_btn.setEnabled(False) self.thread_.start()主函数启动应用时,将黑色主题加入到app的布局当中。
app.setStyleSheet(load_stylesheet_pyqt5())
线程运行相关部分,通过继承 QThead 类来编写子线程。
class WorkThread(QThread): def __init__(self,parent=None): super(WorkThread, self).__init__(parent) self.parent = parent self.notify = ToastNotifier() self.working = True def __del__(self): self.working = False self.wait() def run(self): self.show_toast() def show_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) * 60 print('当前时间:%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) while self.notify.notification_active(): time.sleep(0.005) timer = Timer(notify_sen, self.show_toast) timer.start()"基于PyQt5怎么制作一个windows通知管理器"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
布局
模块
界面
主题
内容
时间
管理
线程
组件
部分
制作
功能
图标
定时器
更多
知识
系统
过程
还是
黑色
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
金碟基础版做系统数据库恢复
温州无线网络技术信息推荐
福建定制软件开发
noaa气象数据库
广东忠润支付网络技术
西城区综合网络技术推广系统
水务局网络安全学习
网络安全原理与实践pdf6
中国扫黄打非网络安全课
网络技术保障措施
河北省博雅数据库
数据库top关键词什么意思
网络技术咨询服务都包括什么
服务器怎么管理选项
迷你asp服务器
ip数据库登录失败怎么办
医保数据库调整的影响
怎么导入另一张表的数据库
服务器下载文件到本地
商户数据库
农村小学网络安全课件
雕刻软件开发
嵌入式软件开发区日料怎么
红米手机与谷歌服务器通信
数据库中表示多个字符用
服务器网络上下行速度不一致
管城回族区软件开发培训班
网络安全作业焦作
数据库统计函数列表
十三部委联合发布网络安全