pyautogui的简单使用
Author:Liedra
https://www.cnblogs.com/LieDra/
大二下学期时候偶然之间看到了pyautogui,进行了一些简单的尝试。
利用Python的pyautogui可以实现对鼠标的控制,也可以进行键盘控制例如打字等。
在一定程度上对于重复性工作可能会有所帮助(例如隔几分钟移动一下鼠标防止锁屏等,当然防锁屏也可以直接设置)。
但总体而言感觉意义不大,比较鸡肋。
当然用的好的话也还是有些比较厉害的地方的。
下面总结一点常用的功能。
0、安装
可以选择在cmd中运行下列命令
pip install pyautogui
1、导入pyautogui
import pyautogui
import time
time.sleep(2) #运行程序前sleep两秒钟,给自己点缓冲时间
# 获取当前屏幕分辨率 下面两种方式
size = pyautogui.size()
width, height = pyautogui.size()
# print(size)
2、鼠标操作
# 获取鼠标位置
mouse_pos = pyautogui.position()
print(mouse_pos)
# moveTo 绝对坐标
pyautogui.moveTo(36,40,duration=1) #duration为持续时间,化1秒钟时间移动鼠标到相应位置
# 鼠标移到屏幕中央。
pyautogui.moveTo(width / 2, height / 2,duration=2)
# moveRel 相对坐标 这里用一个循环来方便观察
# 例子1
while(1):
for i in range(5):
pyautogui.moveRel(0,height/2,duration=1) #向下移动
pyautogui.moveRel(width/16,0,duration=0.2)#向右移动
pyautogui.moveRel(0,-height/2,duration=1)#向上移动
pyautogui.moveRel(width/16,0,duration=0.2)#向右移动
pyautogui.moveRel(-5*width/8,0,duration=1.5)
# 例子2 假装画个圆
r = 25 # 圆的半径
# 圆心
o_x = width/2
o_y = height/2
pi = 3.1415926
while(1):
for i in range(10): # 转10圈
for angle in range(0, 360, 5): # 利用圆的参数方程
X = o_x + r * math.sin(angle*pi/180)
Y = o_y + r * math.cos(angle*pi/180)
pyautogui.moveTo(X, Y, duration=0.001)
# click 鼠标点击
# x和y表示点击屏幕中的哪个位置,如果x和y为None,则点击鼠标当前所在位置。
# clicks表示点击次数,单击、双击等 interval表示连续点击时的时间间隔
# button可以选择'left','middle','right',代表鼠标的左键、中键、右键。
pyautogui.click(x=width / 2, y=height / 2, clicks=1, interval=0.1, button='left', duration=0.2)
3、键盘操作
# 模拟输入信息
pyautogui.typewrite(message='Hello world!',interval=0.5) #这里似乎还不支持输入中文
# 按键 具体按键支持可以参考网上其他资料
pyautogui.press('a') #这里的按键一定要是键盘有的,如esc,a,b,c等,输入aaa这类的会直接跳过
# 按住shift键
pyautogui.keyDown('shift')
pyautogui.press('a') #此时打出来的其实是A
# 放开shift键
pyautogui.keyUp('shift')
pyautogui.press('a') #此时又变为了a
# 模拟组合热键 这里暂停2秒,给选中留下时间 经过测试,是可以成功组合起来使用的
time.sleep(2)
pyautogui.hotkey('ctrl', 'c')
time.sleep(2)
pyautogui.hotkey('ctrl','v')
4、其他
# 提示信息
pyautogui.alert(text='提示框.', title='Test')
pyautogui.confirm('选择.', buttons=['A', 'B', 'C','D'])
a = pyautogui.password('Enter password (文本隐藏)')
print(a)
# 屏幕截图
im1 = pyautogui.screenshot()
im1.save('my_screenshot.png') #保存路径
# 安全设置部分的保护措施
pyautogui.FAILSAFE = True
# 为所有函数增加延迟,可以统一添加,也可以在函数中指明参数
# pyautogui.PAUSE = 0.5
5、Demo
import pyautogui
import math
import time
time.sleep(2) #两秒钟缓冲时间
# 安全设置部分的保护措施
pyautogui.FAILSAFE = True
# 为所有函数增加延迟,可以统一添加,也可以在函数中指明参数
# pyautogui.PAUSE = 0.5
# 获取当前屏幕分辨率 下面两种方式
size = pyautogui.size()
width, height = pyautogui.size()
# print(size)
# 获取鼠标位置
mouse_pos = pyautogui.position()
# print(mouse_pos)
print(pyautogui.onScreen(100,100))
#鼠标移到屏幕中央。
pyautogui.moveTo(width / 2, height / 2,duration=2)
# moveTo 绝对坐标
pyautogui.moveTo(36,40,duration=1)
# moveRel 相对坐标
# test1
while(1):
for i in range(5):
pyautogui.moveRel(0,height/2,duration=1) #向下移动
pyautogui.moveRel(width/16,0,duration=0.2)#向右移动
pyautogui.moveRel(0,-height/2,duration=1)#向上移动
pyautogui.moveRel(width/16,0,duration=0.2)#向右移动
pyautogui.moveRel(-5*width/8,0,duration=1.5)
# test2
for i in range(10):
pyautogui.moveTo(300, 300, duration=0.05)
pyautogui.moveTo(400, 300, duration=0.05)
pyautogui.moveTo(400, 400, duration=0.05)
pyautogui.moveTo(300, 400, duration=0.05)
pyautogui.moveTo(size.width/2,size.height/2,duration=0.5)
# 画圆
r = 250 # 圆的半径
# 圆心
o_x = width/2
o_y = height/2
pi = 3.1415926
for i in range(10): # 转10圈
for angle in range(0, 360, 5): # 利用圆的参数方程
X = o_x + r * math.sin(angle*pi/180)
Y = o_y + r * math.cos(angle*pi/180)
pyautogui.moveTo(X, Y, duration=0.1)
# moveRel 相对坐标
for i in range(10):
pyautogui.moveRel(100, 0, duration=0.05)
pyautogui.moveRel(0, 100, duration=0.05)
pyautogui.moveRel(-100, 0, duration=0.05)
pyautogui.moveRel(0, -100, duration=0.05)
pyautogui.moveRel(100,None,duration=1)
# pyautogui.moveTo(width / 2, height / 2,duration=1)
# click 鼠标点击
# x和y表示点击屏幕中的哪个位置,如果x和y为None,则点击鼠标当前所在位置。
# clicks表示点击次数,单击、双击等 interval表示连续点击时的时间间隔
# button可以选择'left','middle','right',代表鼠标的左键、中键、右键。
pyautogui.click(x=width / 2, y=height / 2, clicks=1, interval=0.1, button='left', duration=0.2)
# 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
# time.sleep(2) #两秒钟缓冲时间
# 除此之外,也可以直接调用
pyautogui.doubleClick() #双击
pyautogui.tripleClick() #三连击
pyautogui.rightClick() #右击
pyautogui.middleClick() #中击
# # 其他
pyautogui.dragTo(x=427, y=535, duration=3,button='left') # 鼠标拖拽
pyautogui.click(x=width / 2, y=height / 2, clicks=1, interval=0.1, button='left', duration=0.2)
pyautogui.mouseDown(x=width / 2, y=height / 2, button='left') # 移动到x,y后按下鼠标
pyautogui.mouseUp(x=427, y=535, button='left') # 移动到x,y后再松开鼠标(与上一条moouseDown组合使用可以实现选中等功能)
pyautogui.click(x=width / 2, y=height / 2, clicks=1, interval=0.1, button='left', duration=0.2)
# 模拟输入信息
pyautogui.typewrite(message='Hello world!',interval=0.5) #这里似乎还不支持输入中文
# 按键 具体按键支持可以参考网上其他资料
pyautogui.press('a') #这里的按键一定要是键盘有的,如esc,a,b,c等,输入aaa这类的会直接跳过
# 按住shift键
pyautogui.keyDown('shift')
pyautogui.press('a') #此时打出来的其实是A
# 放开shift键
pyautogui.keyUp('shift')
pyautogui.press('a') #此时又变为了a
# 模拟组合热键 这里暂停2秒,给选中留下时间 经过测试,是可以成功组合起来使用的
time.sleep(2)
pyautogui.hotkey('ctrl', 'c')
time.sleep(2)
pyautogui.hotkey('ctrl','v')
# 提示信息
pyautogui.alert(text='提示框.', title='Test')
pyautogui.confirm('选择.', buttons=['A', 'B', 'C','D'])
a = pyautogui.password('Enter password (文本隐藏)')
print(a)
# 屏幕截图
im1 = pyautogui.screenshot()
im1.save('my_screenshot.png') #保存路径
6、小结
单一的pyautogui用处不是很大,但是通过与其他工具的结合,还是可以做出一些很有意思的东西。
除此之外,可以通过https://pyautogui.readthedocs.io/en/latest/ 官方文档来进行学习。

浙公网安备 33010602011771号