'''
深入:
一、复制、粘贴指定内容(即按下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()