python的pyautogui模块实现英魂之刃自动翻牌

python的pyautogui模块介绍

Welcome to PyAutoGUI’s documentation! — PyAutoGUI documentation 是pyautogui的官方文档

首先,pyautogui是什么?

他是一个可以控制鼠标,键盘,截图,甚至是识图以及模拟消息框的第三方模块。而且使用起来简单,方便。

为什么会有pyautogui这类模块出现?

在使用电脑进行各种操作时,有可能会出现一些重复性的操作,如果只靠人操作,其实是非常浪费时间的,这类可以帮助人们减少重复性操作的模块,我称他为自动化模块

pyautogui这类模块能用在什么地方?

需要重复性操作的地方,都可以尝试使用pyautogui,就我而言,pyautogui模块最常用的地方是游戏,但有很大一部分游戏,pyautogui是无法使用的(被屏蔽了)。

pyautogui模块怎么用?

pyautogui模块是一个第三方模块,所以需要先下载安装模块,才能在python上使用。

安装:

方法1:终端中输入pip install pyautogui 安装模块。 目前而言,我在很多不同windows电脑上都试了,安装pyautogui模块还没报错过

方法2(pycharm软件):在设置中,python解释器里搜索pyautogui模块安装也可以

导入模块:

import pyautogui

使用此模块之前的基本概念:
坐标系:

文档解释

说白了,就是把电脑屏幕左上角当成原点,建立一个坐标系,横为x,竖为y。往右x增加,往下y增加。x和y都不存在负数的值,最小就是原点(0

,0)。(x,y)最大值取决于电脑的分辨率。

可以用size函数获取屏幕的分辨率,它会返回一个元组来呈现(x,y)。我电脑就是1920*1080

模块具体内容介绍(介绍我认为最常用的):
一.鼠标相关:

1.获取当前鼠标坐标 。使用position() 函数

2.移动鼠标。moveTo(x,y),该函数需要传入x和y,运行之后鼠标会移动(x,y)处。此函数无返回值

3.鼠标左键单击。click(),调用该函数鼠标左键会单击当前鼠标位置一次

4.鼠标左键双击。doubleClick()

4.2doubleClick(x=坐标,y=坐标)里面也可指定坐标位置,这样会先移动到指定位置,再双击。

5.鼠标右键单击。click(button="right"),跟上关键词参数button,click()就是鼠标右击一下

6.鼠标右键双击。通过doubleClick(button="right"),增加button参数,来进行右键的双击,interval参数控制时间间隔。(时间间隔不要太短,可能导致双击失效)

7.鼠标中键单击。middleClick(),用的也少。

其实,还有鼠标拖拽等一些功能,但是我日常几乎没有用到,所以这里就不介绍了,感兴趣的,可以去网上查找资料。

二.键盘相关:

1.typewrite()。键盘控制输入,括号里传字符串内容,会立刻在光标处打出指定内容。这里我是通过time等待了2秒。

1.2 typewrite(interval=0.5),通过interval参数控制打出每个字符的间隔时间

2.press("键盘值"),用来模拟按下某一个指定的键,的这里键入enter,就代表按下回车。

3.keyDown()和keyUp(),keyDown一直按着一个键不松开,keyUp则是松开键。

键分别有这些,

Keyboard Control Functions — PyAutoGUI documentation,这是地址。

三.屏幕,截图相关:

1.screenshot(),获取当前屏幕内容,()里字符串表示保存的图片名字。

会在使用的py文件同一目录下生成截图

1.1 screenshot(region=(左,顶,与左边的距离,与顶部的距离))。下图就表示只获取屏幕以原点开始,长为100的正方形区域。

效果图:

2.locateOnScreen(),传入图片名字,在屏幕中识别图片位置,并返回坐标。

如果传入的图片,并不在屏幕中,会返回None。

重要confidence参数,可以影响图像匹配的准确性,强烈建议加上,一般情况值设置为0.9最好。

四.消息框相关:

1.alert(text="内容",title="标题名字",button="按钮名字"),这个消息框无法获取用户输入。返回值是button的值

2.confirm(text='内容',title='标题名字',buttons=['按钮名字','按钮名字2']),这消息框,可以做出两种选择,点击哪个,就返回哪个。

相当于做个判断

3.prompt(text='请输入内容', title='标题名字' , default=输入框中预先存在的值),这个用的还是比较多的。

3.2 prompt(text='请输入内容', title='标题名字' , default=''哈哈''),如果预先输入哈哈,那么消息框中就会有哈哈。

4 还有一个password(text="文本内容",title="标题名字",default="预先值",mask="需要显示的加密字符")

password函数和prompt差不多,只是多了个mask参数,用于加密正在输入的内容,这里设置为a,输入框打出字后就成了a

小案例:

效果如下。通过上面所说的内容来完成自动点击,关闭操作。

制作过程:

1.把系统提示的图片事先准备好
2.上代码
 from pyautogui import *
 import time
 ​
 time.sleep(1)
 """界面位置不一样,所以下面的位置仅供参考。根据自己的电脑和界面实际情况判断。
 下面的坐标仅供参考"""
 # 获取牌的位置
 #print(position())#坐标 x=1051, y=390
 #获取系统提示界面的关闭位置
 #print(position())#坐标 x=1338, y=440
 #获取放弃的位置
 #print(position())#x=1133, y=828
 ​
 #建一个函数,用来调用图像匹配
 def use_locateonscreen():
     #图像匹配.强烈建议加上confidence参数,能够提高匹配精确率
     result = locateOnScreen("img.png",confidence=0.9)
     #返回值,如果没有匹配到会返回空,匹配到了则会返回一个元组类型
     return result
 ​
 def fan_pai():
     n = 0
     #循环操作5次,也就是翻牌5次
     while n<3:
         n +=1
         #等待1秒
         time.sleep(1)
         # 移动鼠标到牌的位置
         moveTo(x=1051, y=390)
         # 等待一些时间,避免移动的同时点击
         time.sleep(1)
         # 点击翻牌
         click()
         time.sleep(1)
 ​
         #匹配到了图像,就会返回元组,没匹配到就返回None
         if use_locateonscreen() != None:
             #进入到if里,就代表有放弃界面
             #移动到系统提示界面的x位置
             moveTo(x=1338, y=440)
             #等待1秒
             time.sleep(1)
             #点击x关闭
             click()
             # 等待1秒
             time.sleep(1)
 ​
         #移动到放弃
         moveTo(x=1133, y=828)
         # 等待0.5秒
         time.sleep(1)
         # 点击放弃
         click()
 ​
 #入口
 if __name__ == '__main__':
     #调用函数
     fan_pai()
     print("运行结束!")

部分游戏无法控制鼠标解决方法:

在有些游戏中,pyautogui模块会失效,可以尝试使用pydirectinput第三方模块。

pydirectinput模块的内容和pyautogui差不多,pydirectinput使用moveTo(坐标x,坐标y,relative=True),设置relative参数为True并让程序获得管理员权限,可以几乎在所有游戏中实现鼠标移动。

结尾:

对于pyautogui模块的介绍,就到这了。强调一下,这并非pyautogui的全部内容,但是我觉得对于日常来说已经够用了。

pyautogui模块简单,易用。我认为它是非常优秀的第三方模块,这也正是python好用的原因。

  • 27
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值