Python寫一個GUI介面,這個介面實時跟隨微信視窗移動

TANKING發表於2023-04-10

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

相關文章