Python uiautomation获取微信消息并通知 仿Mac通知 代码+原理

前言:

很羡慕Mac的消息通知

收到微信的时候可以很方便的查看, 于是通过python写了一个小程序玩玩,

通过uiautomationpyqt5实现

①效果展示(gif图)

 

②实现原理

通过uiautomation来读取电脑微信的ui

通过获取ui控件,从而读取微信列表,聊天记录,未读消息数量

非常风骚

随后通过pyqt手搓一个GUI界面出来

很简单,两行字和一个图片框即可

③代码解释

这段代码是一个基于PyQt5和uiautomation的Python脚本,用于检查微信消息并在桌面上显示通知窗口。下面是对代码的详细介绍:

1. 导入必要的模块:
   - `sys`:用于处理系统相关的功能。
   - `time`:提供时间相关的功能,如获取当前时间戳。
   - `json`:用于读写JSON数据。
   - `PyQt5.QtWidgets`:提供了用于创建GUI应用程序的各种小部件。
   - `PyQt5.QtCore`:包含了Qt核心功能,如事件处理和定时器。
   - `PyQt5.QtGui`:提供了绘制和渲染GUI元素的功能。
   - `re`:用于正则表达式匹配。
   - `uiautomation`:一个用于自动化Windows界面的库。
   - `PyQt5`:用于创建GUI应用程序。

2. 定义函数 `check_wechat_messages()`:
   - 该函数用于获取微信窗口并检查是否有新消息。
   - 首先,通过 `auto.WindowControl()` 获取微信主窗口。
   - 然后,通过 `wechat_win.ListControl()` 获取会话列表。
   - 遍历会话列表的子项,获取每个会话的名称和值。
   - 使用正则表达式匹配名称中的新消息数量,并将匹配到的会话名称和值添加到 `notifications` 列表中。
   - 最后,返回包含通知的列表。

3. 定义自定义窗口类 `RoundedWindow`:
   - 该类继承自 `QWidget`,表示一个圆角窗口。
   - 在初始化方法中,设置窗口的属性、形状和背景透明度,并保存标题和内容。
   - 重写了 `showEvent()` 方法,在窗口显示时隐藏任务栏图标。
   - 定义了 `rounded_mask()` 方法,用于创建圆角形状的窗口遮罩。
   - 重写了 `paintEvent()` 方法,用于绘制窗口的标题、内容和图片。
   - 定义了 `create_new_window()` 方法,用于创建新的通知窗口。
   - 重写了 `closeEvent()` 方法,在窗口关闭时退出应用程序。
   - 重写了鼠标事件方法,实现窗口的拖动功能。

4. 在 `__main__` 中执行主程序逻辑:
   - 创建一个 `QApplication` 实例,用于管理GUI应用程序。
   - 进入一个无限循环,不断检查微信消息。
   - 调用 `check_wechat_messages()` 函数获取微信通知列表,并保存到 `nb` 变量中。
   - 读取已有数据,如果存在则加载到 `existing_data` 变量中,否则创建一个空列表。
   - 检查 `nb` 中的通知是否重复,如果重复则从 `nb` 中删除重复项。
   - 打印更新后的通知列表 `updated_nb`。
   - 如果通知数量不为零,则创建多个通知窗口并显示在桌面上。
   - 创建一个定时器,每隔一段时间自动关闭一

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值