Python实现实时跟随微信窗口移动的GUI界面
作者:TANKING 发布时间:2022-06-09 11:12:25
标签:Python,实时,移动,窗口
Python写一些简单的GUI界面也是非常简单的,并且Python有着丰富的库,这些库可以很方便我们去操作Windows系统,搭配界面,可以做出很多精美的小工具。本文的案例写一个简单的实例,使用Python创建一个窗口,这个窗口实时监听微信PC版客户端窗口的状态,并且实时跟随在微信电脑版的右侧。
代码
import tkinter as tk
import win32gui
import win32con
class FollowWeChatWindow(tk.Tk):
def __init__(self):
super().__init__()
# 隐藏窗口边框和标题栏
self.overrideredirect(True)
self.title("跟随微信的窗口")
# 窗口置顶
self.wm_attributes('-topmost', True)
# 创建一个标签,用于显示窗口位置信息
self.label = tk.Label(self, text='')
self.label.pack()
# 启动定时器
self.after(50, self.update_window)
def update_window(self):
# 获取微信窗口句柄和位置
wechat_hwnd = win32gui.FindWindow('WeChatMainWndForPC', None)
if wechat_hwnd:
wechat_rect = win32gui.GetWindowRect(wechat_hwnd)
# print(win32gui.GetWindowText(win32gui.GetForegroundWindow()))
# 获取当前鼠标点击的窗口的句柄的标题
getClickHownTitle = win32gui.GetWindowText(win32gui.GetForegroundWindow())
# 判断微信窗口状态,显示或隐藏本窗口
if win32gui.GetForegroundWindow() == wechat_hwnd:
# 当前点击的句柄=微信的句柄
self.wm_attributes('-alpha', 1.0)
elif getClickHownTitle == '跟随微信的窗口':
# 当前点击的窗口的标题=跟随微信的窗口
self.wm_attributes('-alpha', 1.0)
else:
# 不满足以上两个条件的其中一条,都得隐藏窗口
self.wm_attributes('-alpha', 0.0)
print(getClickHownTitle)
# 获取微信窗口高度
WeChat_Height = wechat_rect[3] - wechat_rect[1]
# 更新本窗口位置
self.geometry('200x%d+%d+%d' % (WeChat_Height, wechat_rect[2], wechat_rect[1]))
# 更新标签文本
self.label.configure(text=win32gui.GetForegroundWindow())
else:
# 微信窗口未找到,隐藏本窗口
self.wm_attributes('-alpha', 0.0)
# 继续定时器
self.after(50, self.update_window)
if __name__ == '__main__':
app = FollowWeChatWindow()
app.mainloop()
代码解释
在这个示例中,使用了Python自带的tkinter界面库来实现一个简单的无边框窗口,窗口宽度200,高度与微信窗口一致。通过获取微信客户端的句柄来实时获取微信窗口的位置及大小,启动定时器实时获取到微信的显示状态,50ms更新一次状态以达到跟随的目的。
动图演示
应用
开发一个这样的窗口有什么用途?
客服助手,快捷回复语句
便携笔记,快速记录
备注助手,实时获取微信用户信息
来源:https://segmentfault.com/a/1190000043640284


猜你喜欢
- Pytorch 多分类模型绘制 ROC, PR 曲线(代码 亲测 可用)ROC曲线示例代码import torchimport torch.
- MySQL5.6主从复制(读写分离)教程1、MySQL5.6开始主从复制有两种方式:基于日志(binlog);基于GTID(全局事务标示符)
- 跑代码时,在命令行给python程序传入bool参数,但无法传入False,无论传入True还是False,程序里面都是True。下面是代码
- 一、Selects检索表中的所有行$users = DB::table('users')->get();foreach
- 一切皆是对象在 Python 一切皆是对象,包括所有类型的常量与变量,整型,布尔型,甚至函数。 参见stackoverflow上的一个问题
- 前言本章主要讲述Windows环境下的Jenkins的自动化部署关于JenKins下载的方式有两种,1)直接下载war包,用tomcat/j
- 本文实例为大家介绍实现tab选项卡的应用,此插件相对比较简单,具体内容如下源码文件:tab.js实现原理:1、单击一个元素时,首先将原来高亮
- mysql 时间转换函数的用法DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=
- 参数strSQL 要导出的SQL查询语句strFields 字段名称列表,如果为空字符,则使用SQL语句中的字段名用法示例:1:export
- 目录1、梳理一下Git、github和gitee这三个之间的关系:1.1、Github1.2、Gitee 1.3、Git2、如何安
- finetune分为全局finetune和局部finetune。首先介绍一下局部finetune步骤:1.固定参数 for na
- 本文实例讲述了PHP学习记录之面向对象(Object-oriented programming,OOP)基础。分享给大家供大家参考,具体如下
- 一、功能介绍在进行推广时,我们可以告诉对方,我们的微信公众账号是什么,客户可以去搜索,然后关注。二维码给我们提供了极大的便捷,只要简单一扫描
- 关于权限管理的思考最近用laravel设计后台,后台需要有个权限管理。权限管理实质上分为两个部分,首先是认证,然后是权限。认证部分非常好做,
- 目录01 all or any02 dir03 列表(list)推导式04 pprint05 repr06 sh07 Type hints0
- 本文针对安装mysql5.7.21的笔记进行了总结,分享给大家1、将下载好的mysql压缩包解压到安装目录下2、新建文件 my.ini,放置
- 本文实例讲解了JavaScript实现简单的tab选项卡切换的示例代码,分享给大家供大家参考,具体内容如下效果图:具体代码:<!DOC
- 1. 随机数np.random.random()是最常用的随机数生成函数,该函数生成的随机数随机均匀分布于[0, 1)区间。如果不提供参数,
- 一、设置SQLServer身份验证1、按下windows+R,弹出运行框。2、在弹出框中输入cmd,按下enter键。3、在dos命令窗口输
- 上篇文章给大家介绍了 在 webpack 中使用 ECharts的实例详解 ,可以点击查看。1. 使用NPM安装(全局引入)执行下面的命令: