前言:
很羡慕Mac的消息通知,
收到微信的时候可以很方便的查看, 于是通过python写了一个小程序玩玩,
通过uiautomation和pyqt5实现
①效果展示(gif图)
②实现原理
通过uiautomation来读取电脑微信的ui
通过获取ui控件,从而读取微信列表,聊天记录,未读消息数量
非常风骚
随后通过pyqt手搓一个GUI界面出来
很简单,两行字和一个图片框即可
③代码解释
这段代码是一个基于PyQt5和uiautomation的Python脚本,用于检查微信消息并在桌面上显示通知窗口。下面是对代码的详细介绍:
导入必要的模块:
sys
:用于处理系统相关的功能。time
:提供时间相关的功能,如获取当前时间戳。json
:用于读写JSON数据。PyQt5.QtWidgets
:提供了用于创建GUI应用程序的各种小部件。PyQt5.QtCore
:包含了Qt核心功能,如事件处理和定时器。PyQt5.QtGui
:提供了绘制和渲染GUI元素的功能。re
:用于正则表达式匹配。uiautomation
:一个用于自动化Windows界面的库。PyQt5
:用于创建GUI应用程序。
定义函数
check_wechat_messages()
:- 该函数用于获取微信窗口并检查是否有新消息。
- 首先,通过
auto.WindowControl()
获取微信主窗口。 - 然后,通过
wechat_win.ListControl()
获取会话列表。 - 遍历会话列表的子项,获取每个会话的名称和值。
- 使用正则表达式匹配名称中的新消息数量,并将匹配到的会话名称和值添加到
notifications
列表中。 - 最后,返回包含通知的列表。
定义自定义窗口类
RoundedWindow
:- 该类继承自
QWidget
,表示一个圆角窗口。 - 在初始化方法中,设置窗口的属性、形状和背景透明度,并保存标题和内容。
- 重写了
showEvent()
方法,在窗口显示时隐藏任务栏图标。 - 定义了
rounded_mask()
方法,用于创建圆角形状的窗口遮罩。 - 重写了
paintEvent()
方法,用于绘制窗口的标题、内容和图片。 - 定义了
create_new_window()
方法,用于创建新的通知窗口。 - 重写了
closeEvent()
方法,在窗口关闭时退出应用程序。 - 重写了鼠标事件方法,实现窗口的拖动功能。
- 该类继承自
在
__main__
中执行主程序逻辑:- 创建一个
QApplication
实例,用于管理GUI应用程序。 - 进入一个无限循环,不断检查微信消息。
- 调用
check_wechat_messages()
函数获取微信通知列表,并保存到nb
变量中。 - 读取已有数据,如果存在则加载到
existing_data
变量中,否则创建一个空列表。 - 检查
nb
中的通知是否重复,如果重复则从nb
中删除重复项。 - 打印更新后的通知列表
updated_nb
。 - 如果通知数量不为零,则创建多个通知窗口并显示在桌面上。
- 创建一个定时器,每隔一段时间自动关闭一
- 创建一个
版权归原作者 彭文凤 所有, 如有侵权,请联系我们删除。