python库之autopy


参数表示:
(x:float)
表示x是float类型

(x:float=0)
表示x是float类型,默认值是0

->float
返回一个float类型的数


一、安装的使用

1.介绍

主要用来模拟鼠标和键盘的点击操作。((๑•̀ㅂ•́)و✧脚本)

2.安装

换个阿里云的源就快了:解决pip安装时速度慢的问题

pip install autopy

3.使用

import autopy as at

3.官方文档

https://www.autopy.org/documentation/api-reference/
https://pypi.org/project/autopy/
https://github.com/autopilot-rs/autopy/#autopy-introduction-and-tutorial

二、屏幕at.screen

1.总结

函数参数作用
scale()->float返回一个坐标点(point)中含有几个像素点(pixel)
size()->(float,float)以元组的形式(x,y)返回屏幕的坐标点尺寸
is_point_visible(x:float,y:float)x横坐标,y纵坐标。是坐标点返回布尔类型,如果这个坐标点在屏幕的边界内则True,否则False
get_color(x:float,y:float)->(int,int,int)以元组的形式(r,g,b)返回该坐标点的颜色

2.scale()以及坐标点和像素点关系

import autopy as at
print(at.screen.scale())
#1.5
#表示一个坐标点中含有1.5个像素点。

坐标点(point)和像素点(pixel):

如果得到坐标点,而我们想要获得像素点的话,就用坐标点乘以scale()。

3.size()

import autopy as at

scale=at.screen.scale()

print(at.screen.size())
#(1280.0, 720.0)
#这是屏幕的坐标点的尺寸

#如果想要获得屏幕的像素点的尺寸
print(at.screen.size()[0]*scale,at.screen.size()[1]*scale)
#1920.0 1080.0

4.is_point_visible(x:float,y:float)

import autopy as at

print(at.screen.size())
#(1280.0, 720.0)
#这是屏幕的坐标点的尺寸

print(at.screen.is_point_visible(1000,719))
#True
print(at.screen.is_point_visible(1000,720))
#False
print(at.screen.is_point_visible(1300,720))
#False

和数组下标一样,(1280,720)是不能选择的,因为有(0,0).

5.get_color(x:float,y:float)

import autopy as at

print(at.screen.get_color(1,1))
#(53, 53, 51)

三、鼠标at.mouse

1.总结

坐标体系:左上角(0,0)为原点

函数参数作用
move(x:float, y:float)x横坐标,y纵坐标,是坐标点移动鼠标到位置(x,y)
smooth_move(x:float, y:float)x横坐标,y纵坐标,是坐标点移动鼠标到位置(x,y)
location()->(x:float, y:float)以浮点数元组形式(x,y),返回鼠标当前位置的特殊的点。
坐标点=这个点/scale()/scale(),因为浮点数会有一点的误差
toggle(button: Button, down: bool)button是鼠标按键类型
down如果是True表示按下,是False表示放开
将某个键点击或者释放
click(button:Button, delay:float=0)button是鼠标按键类型
delay是一直按住这个键的时间,默认0秒
toggle()的集成,按button键多长时间,然后松开

2.move(x,y)

x和y的类型:可以是浮点数,也可以是整数(自动转化为浮点数)。

import autopy as at
# 移动到坐标点位置
at.mouse.move(100,100)

3.smooth_move(x,y)

import autopy as at
at.mouse.smooth_move(100,100)

但实际上,使用时会出现ValueError:Point out of bounds。

smooth_move(x,y)的机制是在周围选择一个点,然后从这个点向目标点移动(x,y)。所以问题是出在随机选择的点可能会超出边界。
根据测试,随机选择的点是有范围的。
???好像不对,只适用于此例

import autopy as at

#boundX,boundY分别代表屏幕坐标点的范围
boundX,boundY=at.screen.size()[0],at.screen.size()[1]
print(at.screen.size())
#(1536.0, 864.0)

#dx,dy分别代表随机选择的范围
dx,dy=552,310
p=boundX-dx
q=boundY-dy
#p,q分别是984.0,554.0
#此时要移向屏幕右下角,如果p>984或者q>554,都会出现ValueError,只有p,q小于这个两个值才不会报错
at.mouse.move(p,q)
at.mouse.smooth_move(boundX-1,boundY-1)

4.location()

import autopy as at
scale=at.screen.scale()
at.mouse.move(100,200)

print(at.mouse.location())
#(223.5, 448.5)
#坐标点=这个点/scale()/scale(),因为浮点数会有一点的误差

# 对应的坐标点
print(at.mouse.location()[0]/scale/scale,at.mouse.location()[1]/scale/scale)
#99.33333333333333 199.33333333333334

5.at.mouse.Button类型

Button含义
at.mouse.Button.LEFT鼠标左键
at.mouse.Button.RIGHT鼠标右键
at.mouse.Button.MIDDLE鼠标中键
None值None值在这里代表鼠标左键

6.toggle(button: Button, down: bool)

import autopy as at

at.mouse.toggle(None,True)
#按住鼠标左键
at.mouse.toggle(None,False)
#松开鼠标左键

PS:注意释放,要不然会电脑会一直按着那个键,直到你终止程序。

7.click(button:Button,delay:float=0)

import autopy as at
at.mouse.click(None)
#点左键一下,然后松开
import autopy as at
at.mouse.click(at.mouse.Button.RIGHT)
#点右键一下,然后松开
import autopy as at
at.mouse.click(at.mouse.Button.LEFT,3)
#按住左键保持3秒,然后松开

PS:click()完了后会松开按键的。

四、键at.key

1.总结

函数参数作用
toggle(key: Code, down: bool, modifiers: List[Modifier], modifier_delay: float=0)key:键
down:是否按下
modifiers:修饰键的列表,表示一下按几个键
modifier_delay:按下修饰键的时间,
按下或者释放功能键
tap(key:Code, modifiers: List[Modifier], modifier_delay: float=0)key:键
modifiers:功能键的列表,表示一下按几个键
modifier_delay:不仅延迟时间按修饰键,按完后再延长时间松开按修饰键
toggle()的集成,但效果是按住按键保持2倍的modifier_dalay时间,之后再过modifier_delay时间执行后面的语句
type_string(string:str,wpm:float=0)string:要输入的字符串,即absd
wpm:words per minute,即每分钟多少个字的意思,默认0代表最快,其他就是数字越大打得越快
打出字母键和数字键

2.at.key.Code类型

(1)F

代码含义
at.key.Code.F1
at.key.Code.F2
at.key.Code.F3
at.key.Code.F4
at.key.Code.F5
at.key.Code.F6
at.key.Code.F7
at.key.Code.F8
at.key.Code.F9
at.key.Code.F10
at.key.Code.F11
at.key.Code.F12

(2)控制键

代码含义
at.key.Code.ALT
at.key.Code.SHIFT
at.key.Code.CONTROL
at.key.Code.METAwin功能键
at.key.Code.BACKSPACE
at.key.Code.DELETE
at.key.Code.CAPS_LOCK
at.key.Code.ESCAPEEsc
at.key.Code.SPACE
at.key.Code.RETURNEnter回车键
at.key.Code.TAB

(3)方向键

代码含义
at.key.Code.HOME
at.key.Code.END
at.key.Code.PAGE_DOWN
at.key.Code.PAGE_UP
at.key.Code.UP_ARROW
at.key.Code.DOWN_ARROW
at.key.Code.RIGHT_ARROW
at.key.Code.LEFT_ARROW

3.at.key.Modifier键

只是从at.key.Code里挑了四个出来作为修饰键

代码含义
at.key.Modifier.ALT
at.key.Modifier.SHIFT
at.key.Modifier.CONTROL
at.key.Modifier.METAwin功能键

4.toggle(key: Code, down: bool, modifiers: List[Modifier], modifier_delay: float=0)

import autopy as at

at.key.toggle(at.key.Code.UP_ARROW,True,[])
at.key.toggle(at.key.Code.UP_ARROW,False,[])
#按	方向键↑,向上移动一下
import autopy as at
at.key.toggle(at.key.Code.CONTROL,True,[at.key.Modifier.CONTROL],8)

print(123)
#当at.key.toggle(at.key.Code.CONTROL,True,[at.key.Modifier.CONTROL],8)执行并过了8秒才执行这句,相当于sleep(8)

at.key.toggle(at.key.Code.CONTROL,False,[at.key.Modifier.CONTROL])
#control键保持按下了8秒,关闭的时候直接关就行了

PS:注意释放,要不然会电脑会一直按着那个修饰键,直到你终止程序。

5.tap(key:Code, modifiers: List[Modifier], delay: float=0)

import autopy as at
at.key.tap(at.key.Code.CONTROL,[at.key.Modifier.CONTROL],5)
#按住CONTROL键保持了10秒
print(123)
#之后又过了5秒才输出123

6.at.key.type_string(string:str,wpm:float=0)

import autopy as at
at.key.type_string('Hello123',0)
#Hello123
#快速地打出

五、弹窗at.alert

函数:
autopy.alert.alert(msg: str, title: str=None, default_button: str=None, cancel_button: str=None)

参数含义
msg弹窗信息内容
title弹窗信息标题
default_button无法设置。
由于Win32 API的限制,Windows当前替换 default_button为“确定”和cancel_button(如果给定)替换为“取消”。
cancel_button如果cancel_button未给出,则仅显示默认按钮。无法设置。
由于Win32 API的限制,Windows当前替换 default_button为“确定”和cancel_button(如果给定)替换为“取消”。
import autopy as at
at.alert.alert('hello','python world','1','2')

在这里插入图片描述

六、颜色at.color

函数参数返回值作用
autopy.color.rgb_to_hex(red:int,green:int,blue:int )r, g和b必须在0 - 255范围内→返回一个十六进制返回给定RGB元组的十六进制值
autopy.color.hex_to_rgb(hex:int )一个十六进制数→元组(int,int,int)返回等于给定RGB十六进制值的RGB整数值的元组。
(r, g, b)的r,g,b范围是0 - 255。
import autopy as at
print(at.color.rgb_to_hex(100,100,100))
#6579300
print(at.color.hex_to_rgb(6579300))
#(100, 100, 100)

七、位图/截图

1.截图

at.bitmap.capture_screen( ((x1,y1),(x2,y2)) ) 
  • 如果有给定的矩形坐标(浮点数),那么截取给定的部分。
  • 如果是None,则截取整个屏幕。
  • 返回的是at.bitmap.Bitmap类型的对象

2.存储

这是at.bitmap.Bitmap的成员方法。

import autopy as at

a=at.bitmap.capture_screen(None)
str='some'
#相对路径+文件名字
a.save(str,'png')
#在本文件目录下生成了一个名为some的png图片
import autopy as at

a=at.bitmap.capture_screen(None)
str='C:\\Users\\Administrator\\Desktop\\some'
#绝对路径+文件名字
a.save(str,'png')

八、小程序

1.疯狂点击

在程序启动3秒后,将狂点左键20次(小游戏)

import autopy as at
import time

scale=at.screen.scale()

print(at.mouse.location())
#坐标点=这个点/scale()/scale(),因为浮点数会有一点的误差

time.sleep(3)

for i in range(20):
    at.mouse.click(at.mouse.Button.LEFT)

在程序启动3秒后,将间隔1秒点左键20次(适合刷新)

import autopy as at
import time

scale=at.screen.scale()

print(at.mouse.location())
#坐标点=这个点/scale()/scale(),因为浮点数会有一点的误差

time.sleep(3)

for i in range(20):
    at.mouse.click(at.mouse.Button.LEFT,1)

8小时Python零基础轻松入门

  • 17
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值