前言
有些自动化场景,需要监测系统桌面是否出现指定的按钮,本文是通过在window系统上,捕捉桌面的【关闭电脑】按钮,并点击该按钮来演示整个流程。
功能讲解
1、预定义【关闭电脑】按钮的图片;
2、检测出屏幕上存在与预定义图片相似度高的按钮;
3、获取按钮在桌面的坐标,并对该坐标进行单击操作。
代码如下:
# -*- coding: utf-8 -*-
import pyautogui
import win32con, win32gui, win32print
from win32.lib import win32con
button_image_path = 'button.png'
def getscale_factor():
hdc = win32gui.GetDC(0)
win_width = win32print.GetDeviceCaps(hdc, win32con.DESKTOPHORZRES)
#win_height = win32print.GetDeviceCaps(hdc, win32con.DESKTOPVERTRES)
#print(win_width, win_height)
# 获取当前屏幕分辨率
current_res = pyautogui.size()
# print("current_res:",current_res)
# 设置缩放因子,以适应不同分辨率
scale_factor = current_res.width / win_width # 假设1920x1080是你的基准分辨率
print("scale_factor:",scale_factor)
return scale_factor
def dealbutton(scale_factor):
# 找到特定图片按钮的位置并点击
button_location = pyautogui.locateCenterOnScreen(button_image_path, confidence=0.8)
if button_location is not None:
# 根据缩放因子调整按钮位置
button_location = pyautogui.Point(int(button_location.x * scale_factor), int(button_location.y * scale_factor))
pyautogui.click(button_location)
else:
print('未找到按钮图像')
if __name__=='__main__':
scale_factor=getscale_factor()
dealbutton(scale_factor)
在window中必须使用win32才能获取到精准的坐标,使用其他的方法是有问题的!另外按钮的代码,本人是用QT来实现的,懒得用pyqt5来实现了,资源为QT实现的按钮应用。