python制作客户端软件_Python Pyautogui操作客户端程序

# 1--介绍:

# PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux)。

# 2--安装:

# 在 windows系统上:

pip3 install pyautogui

# 在 mac系统上:

sudo pip3 install pyobjc-core

sudo pip3 install pyobjc

sudo pip3 install pyautogui

# 在 linux系统上:

sudo pip3 install python3-xlib

sudo apt-get scrot

sudo apt-get install python-tk

sudo apt-get install python3-dev

sudo pip3 install pyautogui

# 例 1:

import pyperclip

import pyautogui

# 单击文本框目标:

pyautogui.click(130,30)

pyperclip.copy(u'你好啊Collin') # # pyperclip模块 pyperclip.copy(text)

pyautogui.hotkey('ctrl', 'v') # yautogui.hotkey('keyname1'[,"keyname2"[,...]])

# 例 2:鼠标移动到屏幕中间:

import pyautogui

screenWidth, screenHeight = pyautogui.size() # 获取屏幕分辨率 pyautogui.size()

pyautogui.moveTo(screenWidth / 2, screenHeight / 2) # 移动鼠标到 pyautogui.moveTo(weight,height)

# 3-常用的函数:

# 3.1-获取当前鼠标的坐标

p=pyautogui.position()

p # Point(x=658, y=238)

w,h=p # 解包

print(w) # 668

print(h) # 238

# 3.2-获取当前屏幕的分辨率(宽度和高度)

resolution=pyautogui.size()

print(resolution) # Size(width=1920, height=1080)

w,h=resolution # 解包

print(w) # 1920

print(h) # 1080

# 3.3-判断(x,y)是否在屏幕上:

x, y = 122, 244

print(pyautogui.onScreen(x, y)) # True

# 4-保护措施:

# 4.1-延迟:

pyautogui.PAUSE = 2.5

# 4.2-FailSafeException异常:

# 当pyautogui.FAILSAFE = True时,如果把鼠标光标在屏幕左上角,PyAutoGUI函数就会产生pyautogui.FailSafeException异常。

pyautogui.FAILSAFE = True

# 5-鼠标函数:

# 坐标系的原点是左上角。X轴(水平)坐标向右增大,Y轴(竖直)坐标向下增大。

# 5.1 绝对移动,鼠标从原点移动到指定位置:pyautogui.moveTo(x,y,duration=num_seconds) duration默认为0.1

screenWidth, screenHeight = pyautogui.size() # 获取屏幕分辨率 pyautogui.size()

pyautogui.moveTo(screenWidth / 2, screenHeight / 2) # 移动鼠标到 pyautogui.moveTo(weight,height)

pyautogui.moveTo(200, 300) # 移动鼠标到 pyautogui.moveTo(weight,height)

pyautogui.moveTo(100, 200) # 光标移动到(100, 200)位置

pyautogui.moveTo(None, 500) # 光标移动到(100, 500)位置 None表示此坐标不变

pyautogui.moveTo(600, None) # 光标移动到(600, 500)位置

pyautogui.moveTo(1000, 1000, duration=2) # 光标在2秒内移动到(1000, 1000)位置

# 5.2 相对移动,鼠标从当前点偏移一定距离:pyautogui.moveRel(xOffset, yOffset, duration=num_seconds) duration默认为0.1

num_seconds = 1.5 # 用 num_seconds秒的时间把光标移动到(x, y)位置

xOffset, yOffset = 100, 100

pyautogui.moveRel(xOffset, yOffset, duration=num_seconds)

# 5.3 鼠标拖拽:

# PyAutoGUI的dragTo()和dragRel()函数与moveTo()和moveRel()函数类似。button参数可以设置成left,middle和right三个键。

pyautogui.dragTo(100, 200, button='left') # 按住鼠标左键,把鼠标拖拽到(100, 200)位置

pyautogui.dragTo(300, 400, 2, button='left') # 按住鼠标左键,用2秒钟把鼠标拖拽到(300, 400)位置

pyautogui.dragTo(30, 0, 2, button='right') # 按住鼠标右键,用2秒钟把鼠标拖拽到(30,0)位置

# 5.4 鼠标点击:click()函数就是让鼠标点击,默认是单击左键,参数可以设置:

# pyautogui.click(x=moveToX, y=moveToY[, clicks=num_of_clicks, interval=secs_between_clicks, button='left'])

pyautogui.click(300,300,2,1.5,"right") # 其中,button属性可以设置成left,middle和right

# 5.5 更简单的鼠标点击:

pyautogui.rightClick(x=moveToX, y=moveToY) # 没有多余的参数

pyautogui.middleClick(x=moveToX, y=moveToY)

pyautogui.doubleClick(x=moveToX, y=moveToY)

pyautogui.tripleClick(x=moveToX, y=moveToY) # 3连击

# 5.6 scroll函数控制鼠标滚轮的滚动,amount_to_scroll参数表示滚动的格数。正数则页面向上滚动,负数则向下滚动:

# pyautogui.scroll(clicks=amount_to_scroll, x=moveToX, y=moveToY)

pyautogui.scroll(clicks=50, x=100, y=100)

# 5.7 mouseDown 和 mouseUp

pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')

pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')

# 6-键盘函数:

# 6.1 在目标输入内容或键:pyautogui.typewrite(content/key,interval=)

pyautogui.typewrite('Hello world!\n', interval=0.5) # 输入内容

pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=secs_between_keys) # 输入多个键

# 6.2 获取键盘列表:

pyautogui.KEYBOARD_KEYS[:10] # ['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&']

pyautogui.typewrite(pyautogui.KEYBOARD_KEYS[:10],0.2)

# 6.3 keydown 和 keyup: # 使用完keyDown 之后记得 keyUp

pyautogui.keyDown(key_name) # 按下

pyautogui.keyUp(key_name) # 松开

# 6.4 按压键盘:pyautogui.press()

# press()函数其实是keyDown()和keyUp()函数的包装,模拟的按下然后松开两个动作。这两个函数可以单独调用。

# 例:按下shift键的同时按3次左方向键:

# 1)按下`shift`键

pyautogui.keyDown('shift')

pyautogui.press('left')

pyautogui.press('left')

pyautogui.press('left')

# 2)松开`shift`键

pyautogui.keyUp('shift')

# 和typewrite()函数一样,可以用数组把一组键传入press()。

# 例:

pyautogui.press(['left', 'left', 'left'])

# 6.5 组合热键:6.4的操作有点麻烦,可以使用 hotkey,更加高效:

pyautogui.hotkey('ctrl', 'a') # 全选

pyautogui.hotkey('ctrl', 'c') # 复制

pyautogui.hotkey('ctrl', 'v') # 粘贴

# 7-消息弹窗: 使用的是 Tkinter

pyautogui.alert(text='', title='', button='OK') # button参数可以定制:

pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel']) # buttons参数可以定制:

pyautogui.confirm(text='', title='', buttons=range(10)) # buttons参数可以定制:

pyautogui.prompt(text='', title='' , default='') # 注:无 button/buttons参数

pyautogui.password(text='', title='', default='', mask='*') # 用于输入密码

# 例:

pyautogui.alert('警告弹窗') # OK按钮 返回 'OK'

pyautogui.confirm('确认弹窗') # OK+Cancel按钮 返回 'OK'或'Cancel'

pyautogui.prompt('提示弹窗') # OK+Cancel按钮 返回 输入的内容或 None

# 什么都不输入点ok,返回"",无论输啥点cancel返回 None

pyautogui.password('请输入您空军一号的密码:') # 用于输入密码

# 8-截屏函数,图片操作:

# PyAutoGUI用Pillow/PIL库实现图片相关的识别和操作;在Linux里面,须执行 sudo apt-get install scrot来使用截屏特性。

# 8.1 截图:im = pyautogui.screenshot(filefullpath,region=(x_start, y_start, w ,h))

im=pyautogui.screenshot() # 返回一个 Image对象

pyautogui.screenshot(filefullpath) # 保存到一个路径

pyautogui.screenshot(r"C:\Users\XuYunPeng\Desktop\test.png")

im = pyautogui.screenshot(region=(0, 0, 300 ,400)) # 截取指定大小的屏幕

# 8.2 定位图片位置:pyautogui.locateOnScreen()/pyautogui.center()/pyautogui.locateCenterOnScreen

# 8.2.1 pyautogui.locateOnScreen() 函数来定位:返回 Box(left=最左x坐标,top=最顶y坐标,width=宽度,height=高度)

location=pyautogui.locateOnScreen('pyautogui/looks.png') # Box(left=0, top=0, width=300, height=400)

pyautogui.center(location) # 此函数用于从 location即 Box对象中获取中心点坐标

pyautogui.locateCenterOnScreen('pyautogui/looks.png') # 直接从图片文件中获取中心点坐标, 没找到图片则会返回None。

# 8.2.2 locateAllOnScreen()函数会寻找所有相似图片,返回一个生成器:

for i in pyautogui.locateAllOnScreen('pyautogui/looks.png'):

print(i) # (0, 1040, 48, 40)

list(pyautogui.locateAllOnScreen('pyautogui/looks.png')) # 将生成器转化为列表 [(0, 1040, 48, 40)]

# 8.2.3 locateCenterOnScreen()函数会返回图片在屏幕上的中心XY轴坐标值:

pyautogui.locateCenterOnScreen('pyautogui/looks.png') # (24, 1060) 没找到图片则会返回None。

# 实例:

# 例 1:使用 pyautogui打开计算器界面,点击计算器上的按键 5:

import pyautogui

# 第一步:定位并点击【搜索】图标:

x,y=pyautogui.locateCenterOnScreen(image=r"C:\Users\XuYunPeng\Desktop\Pyautogui_test\search_button.png")

pyautogui.click(x=x,y=y,clicks=1,button='left')

# 第二步:定位【输入框】并输入"calculator":

# x,y=100,1024

# 或:

# location=pyautogui.locateCenterOnScreen(image=r"C:\Users\XuYunPeng\Desktop\Pyautogui_test\search_input.png")

# x,y=pyautogui.center(location)

# 或:

x,y=pyautogui.locateCenterOnScreen(image=r"C:\Users\XuYunPeng\Desktop\Pyautogui_test\search_input.png")

pyautogui.moveTo(x,y)

pyautogui.typewrite('calculator', interval=0.5)

# 第三步:定位并点击计算器 【open】 按钮:

x,y=pyautogui.locateCenterOnScreen(image=r"C:\Users\XuYunPeng\Desktop\Pyautogui_test\calculator_open.png")

pyautogui.click(x=x,y=y,clicks=1,button='left')

# 定位并点击按钮 【5】:

x,y=pyautogui.locateCenterOnScreen(image=r"C:\Users\XuYunPeng\Desktop\Pyautogui_test\cal_5.png")

pyautogui.click(x=x,y=y,clicks=1,button='left')

# 例 2:使用 pyautogui打开两个计算器界面,拖拽其中一个,使两个窗口并列,分别点击两个计算器上的相同按键 5:

for i in range(0,2):

# 第一步:定位并点击【搜索】图标:

x,y=pyautogui.locateCenterOnScreen(image=r"C:\Users\XuYunPeng\Desktop\Pyautogui_test\search_button.png")

pyautogui.click(x=x,y=y,clicks=1,button='left')

# 第二步:定位【输入框】并输入"calculator":

# x,y=100,1024

# 或:

# location=pyautogui.locateCenterOnScreen(image=r"C:\Users\XuYunPeng\Desktop\Pyautogui_test\search_input.png")

# x,y=pyautogui.center(location)

# 或:

x,y=pyautogui.locateCenterOnScreen(image=r"C:\Users\XuYunPeng\Desktop\Pyautogui_test\search_input.png")

pyautogui.moveTo(x,y)

pyautogui.typewrite('calculator', interval=0.5)

# 第三步:定位并点击计算器 【open】 按钮:

x,y=pyautogui.locateCenterOnScreen(image=r"C:\Users\XuYunPeng\Desktop\Pyautogui_test\calculator_open.png")

pyautogui.click(x=x,y=y,clicks=1,button='left')

# 第四步:拖拽第2个计算器窗口至指定位置:

pyautogui.moveTo(295,255)

pyautogui.dragTo(700, 165, button='left')

# 第五步:在两个计算器窗口中分别输入按键 5:

for location in pyautogui.locateAllOnScreen(image=r"C:\Users\XuYunPeng\Desktop\Pyautogui_test\cal_5.png"):

print(location)

x,y=pyautogui.center(location)

pyautogui.click(x=x,y=y,clicks=1,button='left')

作者:Collin wx:pxy123abc tel:17763230890

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值