遇到问题

因为最近在剪辑《幸运星》视频,所以要录点素材,但是每集视频20分钟,我不能都再看一遍啊,所以要实现一个定时录制的功能,正好再学习一下python,一举两得,岂不美哉!!

实现思路

  • 坐标捕获
  • 判断点击
  • 延迟执行

实现源码

import sys

import pyautogui
import time

# 2022/4/9
# create by 刘鸿涛

while True:
    # String坐标赋给getString变量
    getString = ("\r" + str(pyautogui.position()))
    time.sleep(1)
    print(getString)
    # 先截取,再转int
    # 捕获x1
    x1 = getString[9:13]
    print(x1)

    # 捕获y2
    y1 = getString[17:21]
    print(y1)

    try:
        x = int(x1)
    except:
        print('x包含非数字字符....')
        x = x1

    try:
        y = int(y1)
    except:
        print('y包含非数字字符....')
        y = y1


    print(isinstance(x,int))
    print(isinstance(y,int))

    print(x)
    print(y)

    # 如果x,y顺利完成int转型,那么就执行以下语句
    if (isinstance(x, int) & isinstance(y, int)):
            # 左上角 -644 1064
            # 右下角 -520 1100
        if (-520 > x > -644 & x < -520 & 1100> y > 1064):

            print("对上了!!!")
            time.sleep(3)
            pyautogui.click(x,y)
            print("已执行!!程序关闭!!")
            sys.exit()

    else:
        print("还未对上哦...")


成功执行

请添加图片描述

总结与分析

1:我们要获取鼠标光标坐标,使用pyautogui包的position方法,我们循环此方法,返回一个getString类型的String变量

2:我们需要给String截取并转型为int,这样我们才可以进行动态数字化判断

3:如果x和y在转型后都为int,那么我们就执行坐标判断,是否对上我们的目标焦点,如果对上,就print、sleep,并执行pyautogui.click(x,y),否则,打印未对上

难点:

判断是否符合转型条件

使用try except语句

如果我截取的此String包含非法字符,那么我本次转型必定会报异常,导致程序退出,所以我们使用try包裹

如果try未报异常,我们就直接转型,如果异常,证明有非法字符,所以我们在except中进行赋值,保证下面的判断语句可以正常执行

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐