文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于PyQt5怎么制作一个windows通知管理器

2023-06-29 02:33

关注

本篇内容介绍了“基于PyQt5怎么制作一个windows通知管理器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

python框架win10toast,它可以用来做windows的消息通知功能。通过设定通知的间隔时间来实现一些事件通知的功能,比如可以可以提醒一头扎进代码编写过程的我们按时喝水。

基于PyQt5怎么制作一个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())

基于PyQt5怎么制作一个windows通知管理器

线程运行相关部分,通过继承 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通知管理器”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯