关于python:Python写一个GUI界面这个界面实时跟随微信窗口移动

39次阅读

共计 1592 个字符,预计需要花费 4 分钟才能阅读完成。

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 更新一次状态以达到追随的目标。

利用

开发一个这样的窗口有什么用处?

  • 客服助手,快捷回复语句
  • 便携笔记,疾速记录
  • 备注助手,实时获取微信用户信息

作者

TANKING

正文完
 0