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/ 官方文档来进行学习。

posted @ 2019-12-08 20:02  LieDra  阅读(1187)  评论(0)    收藏  举报