pyautogui通过图像获取定位实现计算器自动计算

使用 pyautogui.locateCenterOnScreen 能够在屏幕上搜索给定图像的位置,并准确地返回该图像的中心点坐标。

🌿使用 pyautogui 实现计算器自动计算

  1. 准备工作,把计算器的按钮截图保存下来。例如:
    在这里插入图片描述
  2. 计算“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])
  1. 打开计算器,并运行代码,结果如下:
    在这里插入图片描述
  2. 改进:
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,函数将在灰度图像上执行搜索,这通常会加快处理速度,尤其是只需要进行颜色不敏感的查找时。

使用注意事项

  1. 提供清晰的图,图像的尺寸和颜色与屏幕上实际元素匹配,不应包含多余的背景。
  2. 图像应为 PNG、JPG 或 BMP 格式。
  3. 确保屏幕分辨率不会改变,否则可能识别失败。
  4. 确保窗口在屏幕上的可识别位置不会改变并且没有遮挡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

镜花照无眠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值