使用 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 格式。
 - 确保屏幕分辨率不会改变,否则可能识别失败。
 - 确保窗口在屏幕上的可识别位置不会改变并且没有遮挡。
 



















