吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2588|回复: 16
上一主题 下一主题
收起左侧

[Python 原创] python找图片并用鼠标点击

  [复制链接]
跳转到指定楼层
楼主
相位猛冲 发表于 2024-1-21 13:30 回帖奖励
用python编写自动化脚本的时候
大部分的业务逻辑都是在用【鼠标点击指定坐标和图片】
1.鼠标指定坐标点击  Python 模拟用户操作鼠标
2.找到图片点击图片

如果你不知道窗口句柄,可以用我下面的代码,只要输入目标的窗口名字就行
例如:
1.你打开了【QQ游戏】窗口,直接用
[Python] 纯文本查看 复制代码
句柄_模糊取标题(“QQ游戏”)

2.你打开了【QQ游戏 - fdsfxcqwesfdsxvcx】窗口,也直接用
[Python] 纯文本查看 复制代码
句柄_模糊取标题(“QQ游戏”)

源码放在下面了
[Python] 纯文本查看 复制代码
import re,win32gui

def 句柄_模糊取标题(模糊标题名):
    ' 匹配多个:返回数组;反之:返回1个\n\n返回-1没有找到'
    窗口句柄_list = []

    # 编译正则表达式模式
    pattern = re.compile(模糊标题名, re.I)  # re.I 表示不区分大小写

    # 遍历所有窗口,找到匹配的标题
    def callback(窗口句柄, 窗口句柄_list):
        if win32gui.IsWindowVisible(窗口句柄):
            window_text = win32gui.GetWindowText(窗口句柄)
            if re.search(pattern, window_text):
                窗口句柄_list.append(窗口句柄)
        return True

    # 枚举窗口并执行回调函数
    win32gui.EnumWindows(callback, 窗口句柄_list)
    if len(窗口句柄_list) == 1:
        return 窗口句柄_list[0]
    elif len(窗口句柄_list) > 1:
        return 窗口句柄_list
    else:
        return -1


查找图片并点击的python源码如下:
[Python] 纯文本查看 复制代码
import pyautogui,os,win32gui

图片_找图并点击('1.png')

def 图片_找图并点击(image_path, 窗口句柄=None, click_type=1, s=None):
    """识别图像并根据提供的参数执行单击或双击。"""

    if not os.path.exists(image_path):
        print("图片路径错误:不存在这个图片!")
        return

    # 记录当前鼠标位置,稍后将鼠标恢复到此位置
    original_x, original_y = pyautogui.position()

    try:
        # 激活窗口
        if 窗口句柄:
           win32gui.SetForegroundWindow(窗口句柄)  # 设置窗口到前台

        # 区分窗口句柄是否存在,决定如何进行屏幕捕获
        if 窗口句柄:
            # 获取窗口的屏幕坐标
            left, top, right, bottom = win32gui.GetWindowRect(窗口句柄)
            window_screenshot = ImageGrab.grab(bbox=(left, top, right, bottom))
            # 在窗口截图中寻找匹配图像
            position = pyautogui.locate(image_path, window_screenshot, confidence=0.8)
        else:
            # 在整个屏幕中寻找匹配图像
            position = pyautogui.locateOnScreen(image_path, confidence=0.8)

        if position is None:
            print("图片未找到!")
            return

        # 计算图像中心点
        center_x, center_y = position.left + position.width // 2, position.top + position.height // 2
        if 窗口句柄:
            # 将坐标调整到全屏幕坐标
            center_x += left
            center_y += top

        pyautogui.moveTo(center_x, center_y)  # 移动鼠标到图像中心

        if s:  # 如果有延迟参数,先延时
            time.sleep(s)

        # 根据click_type参数,执行单击或双击
        if click_type == 2:
            pyautogui.doubleClick()
        else:
            pyautogui.click()

    except Exception as e:
        print("图片挡住了:", e)

    finally:
        pyautogui.moveTo(original_x, original_y)  # 操作后将鼠标还原到原位


快去试试把{:1_918:}

免费评分

参与人数 5吾爱币 +9 热心值 +4 收起 理由
知意执意 + 1 热心回复!
2803424069 + 1 + 1 我很赞同!
Pwaerm + 2 + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
shishangyayi + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
hqt 发表于 2024-1-21 22:44
wc 中文def… 理论上
[Python] 纯文本查看 复制代码
def 打印(arg:str):
  print(arg)
是不是能把整个Python改成中文我想整活了
推荐
 楼主| 相位猛冲 发表于 2024-1-22 17:56 |楼主
helian147 发表于 2024-1-22 13:04
试了试,pyautogui找图片效果不稳定,不改代码的前提下,有时找得到有时找不到图片报错

图片在电脑屏幕里,没有遮挡的话,应该是可以的

图片有可能会受电脑背景影响,把图片截小一点试试

例外我用的python3.12 win10
头像被屏蔽
沙发
郑前勇 发表于 2024-1-21 15:00
3#
 楼主| 相位猛冲 发表于 2024-1-21 15:16 |楼主
郑前勇 发表于 2024-1-21 15:00
要是来个成品就更好了

拿我的源码直接编译exe就可以了
头像被屏蔽
4#
郑前勇 发表于 2024-1-21 15:20
提示: 作者被禁止或删除 内容自动屏蔽
5#
sai609 发表于 2024-1-21 15:54
以图搜索的python逻辑在哪里
6#
新颖轻 发表于 2024-1-21 16:40
怎么感觉是个易语言写法
7#
urdarling 发表于 2024-1-21 18:57
这个做自动化测试方便
8#
xingwenzhiyuan 发表于 2024-1-21 19:50
这个代码,很厉害的说,学习一下
9#
Pwaerm 发表于 2024-1-21 20:51
好的学习资料,谢谢分享。  但是中文变量名有点不习惯
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表