使用 pyautogui.locateCenterOnScreen
能够在屏幕上搜索给定图像的位置,并准确地返回该图像的中心点坐标。
🌿使用 pyautogui 实现计算器自动计算
- 准备工作,把计算器的按钮截图保存下来。例如:
- 计算“7+5=”,实现代码如下:
# 自动计算器输入
import pyautogui
x = [0]*4
x[0] = pyautogui.locateCenterOnScreen('7.png')
x[1] = pyautogui.locateCenterOnScreen('+.png')
x[2] = pyautogui.locateCenterOnScreen('5.png')
x[3] = pyautogui.locateCenterOnScreen('=.png')
for i in range(4):
pyautogui.click(x[i])
- 打开计算器,并运行代码,结果如下:
- 改进:
import pyautogui
import time
def click_button(image):
location = pyautogui.locateCenterOnScreen(image)
if location is not None:
pyautogui.click(location)
time.sleep(0.5) # 等待按钮反应
else:
print(f"{image} 找不到")
def clear_if_exists():
# 检查 CE 按钮是否存在
ce_location = pyautogui.locateCenterOnScreen('CE.png')
if ce_location is not None:
click_button('CE.png') # 如果存在,点击 CE
print("已点击 CE 按钮以清除输入。")
else:
print("CE 按钮未找到,无需清除。")
def calculate(expression):
for char in expression:
if char.isdigit() or char == '+' or char == '-' or char == '×' or char == '÷':
click_button(f'{char}.png') # 例如 '1.png', '2.png'
elif char == '.':
click_button('dot.png') # 小数点
elif char == '=':
click_button('=.png')
time.sleep(1)
if __name__ == '__main__':
time.sleep(5) # 给时间切换到计算器窗口
clear_if_exists() # 确保开始前清除输入
calculate("12+34=") # 计算 12+34 =
刚开始不存在CE,则直接计算
存在CE,则先按CE再计算
函数原型
pyautogui.locateCenterOnScreen(image, confidence=None, grayscale=False)
参数
image:必须。图像文件的路径或图像对象。
confidence:置信度,可选,默认为 None。此参数在 OpenCV 中使用,介于 0 到 1 之间的浮点数,例如 0.8,表示认为匹配的可能性需要达到 80% 以上才能返回位置。未安装 OpenCV 或不需要使用置信度,省略此参数。
grayscale:可选,默认为 False。若设为 True,函数将在灰度图像上执行搜索,这通常会加快处理速度,尤其是只需要进行颜色不敏感的查找时。
使用注意事项
- 提供清晰的图,图像的尺寸和颜色与屏幕上实际元素匹配,不应包含多余的背景。
- 图像应为 PNG、JPG 或 BMP 格式。
- 确保屏幕分辨率不会改变,否则可能识别失败。
- 确保窗口在屏幕上的可识别位置不会改变并且没有遮挡。