pyautogui模块 图形自动化控制鼠标键盘相关操作

'''
深入:
一、复制、粘贴指定内容(即按下shift 后 left 后ctrl+c达不到复制的目的)
二、中文输入(已解决)
三、定位图片位置  
1、匹配准确度参数 设置报错问题:即pyautogui.locateOnScreen('',confidence=0.9)  可选参数confidence出错(安装包pip install opencv-python后会产生 读取 文件的权限问题)
2、定位区域参数  多屏设置查找问题:即pyautogui.locateOnScreen('',region=(0,0,300,400))  可选参数region设置位置为多屏时无法找到位置

                                  
已解决:
一、中文输入    解决方案为  自建函数paste():  结合 pyperclip库 和 pyautogui库来实现中文输入 复制粘贴动作。

import pyperclip    #PyAutoGUI用热键来实现 中文输入和粘贴
import pyautogui    #pyperclip用.copy()方法实现 中文复制
def paste(text):
    pyperclip.copy(text)
    pyautogui.hotkey('ctrl', 'v')
text = u'血皇敖天'
pyautogui.click(330,500)    #鼠标移动到位置并点击
paste(text)


使用:
一、缓动/渐变参数支持 鼠标动作移动、单击、拖动等;button参数设置左右键
duration=1,tween=pyautogui.easeInOutQuad
二、时间间隔参数支持 鼠标及按键动作click、press、typewrite等
interval=1

三、输出所有支持键名:print(pyautogui.KEYBOARD_KEYS)
四、pyantogui.typewrite()参数为字符串则输出文本段,参数为列表则输叠加press按键功能。

五、持续事件判定(颜色判定监听)
while not pyautogui.pixelMatchesColor(100,200,(220,150,50),tolerance=10):
    time.sleep(0.5)
六、键盘鼠标监听(pynput模块)
'''





# =============================================================================
# #下面开始pyautogui代码  自动化图形控制鼠标键盘相关操作
# =============================================================================

import pyautogui    


pyautogui.FAILSAFE=True    #添加失控保险  鼠标指向左上角 即point(x,y)=0,0则停止程序
pyautogui.PAUSE=0.5        #添加暂停时间 作用于每一个pyautogui方法  即方法执行后暂停0.5秒


#获取屏幕尺寸像素值  pyautogui.size()
screenWidth,screenHight=pyautogui.size()         #获取屏幕尺寸分辨率像素值  .size()
#鼠标移动到屏幕中间  
pyautogui.moveTo(screenWidth/2,screenHight/2)    #鼠标移动到屏幕中间  .moveTo(x,y)  绝对位置

#获取当前鼠标位置  pyautogui.position()
currentMouseX,currentMouseY=pyautogui.position()  #获取当前鼠标坐标  .position()   返回 poin(x=,y=)
print(pyautogui.position())
#屏幕上是否包含坐标(x,y)
print(pyautogui.onScreen(100,200))                       #当前屏幕是否包含坐标  返回布尔值


# =============================================================================
# #鼠标动作 及 连续操作
# #参数:(x=,y=,clicks=,duration=,tween=,interval=,button='left')
# =============================================================================
#
##鼠标移动   可选参数duration=1即缓动持续时间1秒,tween=tween=pyautogui.easeInOutQuad即渐变效果。
#pyautogui.moveTo(307,403)    #鼠标移动到绝对位置x,y
#pyautogui.moveRel(100,100)   #鼠标移动相对位置x,y
#
##鼠标拖动  
#pyautogui.dragTo(400,500)    #鼠标拖动至绝对位置x,y
#pyautogui.drag(30, 0)        #鼠标拖动至相对位置x,y
#
#
##鼠标单击、右击、双击、三击、滚动
##pyautogui.click(x=,y=,clicks=,duration=,tween=,interval=,button='left')
##参数x,y为坐标,clicks为单击次数,interval单击间隔时间,button为左右中间键
#pyautogui.click(x=500,y=500,clicks=1)  #鼠标移动到位置然后单击
#pyautogui.rightClick()     #鼠标右击
#pyautogui.doubleClick()    #鼠标双击
#pyautogui.tripleClick()    #鼠标三击
#pyautogui.middleClick()    #鼠标中间单击
#pyautogui.scroll(100)      #为正则向上滚动像素,为负则向下像素
#pyautogui.scroll(-1000,x=600,y=600)    #鼠标移动到位置x,y,然后向下滚动1000像素。
#
#
##鼠标移动后按下、移动后抬起
#pyautogui.mouseDown(x=800,y=800,button='left')      #鼠标移动到位置x,y然后按下左键
#pyautogui.mouseUp(x=500,y=500,button='left')        #鼠标移动到位置x,y然后抬起左键


# =============================================================================
# #键盘动作
# #键盘的打字、按键、按下、抬起、热键等操作
# #参数(x=,y=,duration=,tween=,interval=)
# =============================================================================
#
#pyautogui.moveTo(307,403,duration=1,tween=pyautogui.easeInOutQuad)      #鼠标移动到x,y,缓动、渐变。
#pyautogui.click(x=307,y=403,duration=1,tween=pyautogui.easeInOutQuad)   #鼠标移动到x,y后单击,缓动、渐变。
#
##键盘写入  pyautuogui.typewrite('',interval=1)  
##注意:参数1可以输入字符或者传入列表,字符参数则输入文本,列表参数则叠加press功能
##可选参数 interval=1 即输入间隔时间1秒
##注意:写入之前需要指定位置  即:moveTo() 和 click()
#pyautogui.typewrite('# pyatuogui.typewrite() ! ',interval=0.25)  #键盘写入相关字符  .typewrite('',interval=)  参数interval=0.25即打字间隔0.25秒
#pyautogui.press(['left','left','left','left','left'])            #按键  press  一组按键[] 向左方向键
#pyautogui.press('esc')                                           #按键  press('')  按键ESC
#pyautogui.press('enter')                                         #按键  确认键
#pyautogui.press('f1')                                            #按键  F1键
#
##键盘按下、键盘抬起、热键
#pyautogui.keyDown('shiftleft')                                   #按下  .keyDown('')  按下shift键
#pyautogui.keyUp('shiftleft')                                     #抬起  .keyup('')  抬起shift键  
#pyautogui.hotkey('ctrl','c')                                     #热键  hotkey('','')  热键组合


# =============================================================================
# #消息提示框动作
# #四种模式(1.确认框、2.确认/取消框、3.文本框、4.密码框)
# #可选参数(text=,title=,buttons=[,,,],default=,mask=,)
# =============================================================================
#
#pyautogui.alert('确认 返回值 OK',title='')                         #确认提示框  返回值'OK'
#pyautogui.confirm('确认/取消,默认返回值 OK/Cancel')                #确定/取消 消息框  .confirm(text='',title='',buttons=['OK','Cancel'])
#pyautogui.confirm('选择按钮',buttons=['1','2','3','4'],title='')   #自定义按钮数量 及 自定义按钮名称即返回值
#pyautogui.prompt(text='输入文本', title='Title' , default='小王')  #文本输入并确认/取消按钮提示框  点击确认返回输入内容,点击取消返回None
#pyautogui.password(text='输入密码',title='',default='******',mask='*')    #文本输入并确认/取消按钮  密码形式输入  点击确认返回输入文本,点击取消返回None        
#

# =============================================================================
# #截屏操作
# =============================================================================
##截屏  pyautogui.screenshot('',region=(,,,))  
##参数1保存位置
##可选参数region=0,0,100,100 即选择区域:左侧、顶部、宽度、高度
#pyautogui.screenshot('截屏定位图片/当前屏幕.png')                         #截屏整个屏幕  返回一个PIL对象,可选保存路径    速度快的很呀,可以单独拿来截屏然后 PIL截取,然后识别,然后搜索。
#pyautogui.screenshot('截屏定位图片/quyu.png',region=(0,0,300,400))    #截屏区域  region=0,0,300,400 即选择区域:坐标0,0位置,截取宽300高400图片
#

# =============================================================================
# #定位查找屏幕图像操作
# #pyautogui.locateOnScreen('',confidence=,region=(,,,),grayscale=True))  

# #返回值box(,,,)  是一个4整数元组:(左,顶,宽,高)
# #可选参数  confidence=0.9          即指定定位准确度。
# #可选参数  region=(0,0, 300, 400)  即选定定位查找屏幕区域,避免整屏幕查找
# #可选参数  grayscale=True          即灰度匹配  这会使图像和屏幕截图中的颜色去饱和,从而加快定位速度,但可能导致误判。
# =============================================================================
#
#print(pyautogui.locateOnScreen('TdxW定位图片/08TdxW.png'))
#
#
##查找位置box,清洗成中心位置point,然后点击中心位置x,y
#box= pyautogui.locateOnScreen('TdxW定位图片/08TdxW.png')  #返回值:box(,,,)
#x,y=pyautogui.center(box)                                #center方法返回值:point(x=,y=)
#pyautogui.click(x,y)
#
##赋值中心x,y坐标的另一种方法    
##返回值: point(x=,y=)
##该locateCenterOnScreen()功能结合locateOnScreen()和center():
##注意: 如果定位失败没有定位返回None,则赋值会引发错误。
#pyautogui.locateCenterOnScreen('TdxW定位图片/08TdxW.png',grayscale=True)
#
##点击中心x,y坐标的另一种方法   
##直接选择点击图片该功能结合locateOnScreen()和center()和clice
##注意:直接点击图片操作 则无灰度匹配等 可选参数支持
#pyautogui.click('TdxW定位图片/08TdxW.png',clicks=2)
#
#
##定位屏幕上找所有图像位置,返回生成器
##for循环迭代输出后返回值 box(x,y,w,h)
#pyautogui.locateAllOnScreen('TdxW定位图片/08TdxW.png',grayscale=True)
#for i in pyautogui.locateAllOnScreen('TdxW定位图片/08TdxW.png',grayscale=True):
#    print(i)


# =============================================================================
# #像素匹配RGB值 及 获取像素RGB值 
# #像素匹配RGB值可用来实现 事件判定,即颜色判定监听。
# =============================================================================
##素RGB值匹配  pyautogui.pixelMatchesColor(x,y,(,G,B))  
##参数:  x,y,(RGB值)  返回布尔值
##可选参数tolerance=10  即指定RGB的每个值的正负误差
#pyautogui.pixelMatchesColor(100,200,(219,144,58))
#pyautogui.pixelMatchesColor(100,200,(220,150,50),tolerance=10)
#
#
##获取像素RGB值
#print(pyautogui.pixel(100,200))  #直接调用 pyautogui.pixel(x,y) 来获取像素RGB值
#
##结合PIL模块获取像素RGB值
#img=pyautogui.screenshot()       #截屏后直接获得PIL模块的Image()对象
#print(img.getpixel((100,200)))










# =============================================================================
# #示例:
# #while循环 将鼠标拖动为方形螺旋形状,可用于绘图页面
# =============================================================================
#import pyautogui
#
#pyautogui.click(1966,283)
#pyautogui.moveTo(2541,458,duration=2,tween=pyautogui.easeInOutQuad)  #参数duration=1即持续时间1秒完成。
#
#
#distance=200
#while distance>0:
#    pyautogui.dragRel(distance,0,duration=0.5)                   #拖动相对位置 向X右移动distance距离  .dragRel(x,y) 参数:距离,dutation=0.5即延迟时间
#    distance-=20                                                 #距离减小 即产生间距
#    pyautogui.dragRel(0,distance,duration=0.5)                   #向y下移动
#    pyautogui.dragRel(-distance,0,duration=0.5)                  #向-x左移动
#    distance-=20                                                 #距离继续减小
#    pyautogui.dragRel(0,-distance,duration=0.5)                  #向-y上移动


    

# =============================================================================
# #示例:
# #
# #鼠标左键单击 监测鼠标位置及像素RGB值
# #鼠标右键单击 退出 监测鼠标位置及像素RGB值
# =============================================================================
#
#import pyautogui
#from pynput import mouse
#
#def on_click(x,y,button,pressed):
#    
#    if button == mouse.Button.right:
#        return False
#    
#    if pressed:
#        coordination=(int(x),int(y))
#        pixelColor=pyautogui.pixel(int(x),int(y))
#        print(coordination,pixelColor)
#
#with mouse.Listener(on_click=on_click,) as listener:
#    listener.join()




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值