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