python库之autopy
文章目录一、安装的使用1.介绍2.安装3.使用3.官方英文文档二、屏幕at.screen1.总结2.scale()以及坐标点和像素点关系3.size()4.is_point_visible(x:float,y:float)5.get_color(x:float,y:float)三、鼠标at.mouse1.总结2.move(x,y)3.smooth_move(x,y)4.location()5.Bu
参数表示:
(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.META | win功能键 |
at.key.Code.BACKSPACE | |
at.key.Code.DELETE | |
at.key.Code.CAPS_LOCK | |
at.key.Code.ESCAPE | Esc |
at.key.Code.SPACE | |
at.key.Code.RETURN | Enter回车键 |
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.META | win功能键 |
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零基础轻松入门
更多推荐
所有评论(0)