python实现按键精灵的功能_pyautogui简介_python中的按键精灵_键盘鼠标模拟

以下翻译来自官司网说明网站 pyautogui.readthedocs.io

pyautogui模块的目的是提供跨平台的自动化键盘鼠标操作。这个模块我们尽可能设计得容易使用。例如,下面的代码都会把鼠标指针移到计算机屏幕中央。

>>> import pyautogui

>>> screenWidth, screenHeight = pyautogui.size()

>>> pyautogui.moveTo(screenWidth / 2, screenHeight / 2)

pyautogui模块能让你模拟鼠标指针的移动、单击鼠标、拖曳鼠标指针,按住或松开某键,或者组合键也是没问题的。下面是一个例子:

>>> import pyautogui

>>> screenWidth, screenHeight = pyautogui.size() # 获取屏幕尺寸

>>> currentMouseX, currentMouseY = pyautogui.position() # 当前鼠标指针坐标

>>> pyautogui.moveTo(100, 150) # 移动鼠标到(100,150)坐标

>>> pyautogui.click() # 单击

>>> pyautogui.moveRel(None, 10) # move mouse 10 pixels down 向下移动鼠标指针10个像素

>>> pyautogui.doubleClick() # 双击

>>> pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.easeInOutQuad) # 2秒内移动鼠标指针到某坐标

# 下面是模拟输入英文字符

>>> pyautogui.typewrite('Hello world!', interval=0.25) # 1/4秒的间隔时间输入一个字符

>>> pyautogui.press('esc') # 按esc键

>>> pyautogui.keyDown('shift') # 按住上档键

>>> pyautogui.press(['left', 'left', 'left', 'left', 'left', 'left']) # 按左左左左左左

>>> pyautogui.keyUp('shift') # 松开上档键

>>> pyautogui.hotkey('ctrl', 'c') # 按Ctrl + C键

下面的例子是拖动鼠标指针画一个方形螺旋图,请先打开mspaint,方法是按Win+r键,然后在运行对话框中输入 mspaint。

>>> distance = 200

>>> while distance > 0:

pyautogui.dragRel(distance, 0, duration=0.5) # 向右移动

distance -= 5

pyautogui.dragRel(0, distance, duration=0.5) # 向下移动

pyautogui.dragRel(-distance, 0, duration=0.5) # 向左移动

distance -= 5

pyautogui.dragRel(0, -distance, duration=0.5) # 向上移动

在Windows操作系统中,pyautogui不需要依赖其它模块。如,它不需要有pywin32模块支持,这是由于它使用ctypes模块。安装pyautogui的方法很简单,用 pip install pyautogui命令即可,它会安装pillow,以实现截屏功能。通过命令pyautogui.PAUSE = 2.5,可以让每次动作后暂停2.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) # 三击

以下是信息提示框功能:

>>> pyautogui.alert('显示一个有OK的提示对话框')

>>> pyautogui.confirm('显示一个有OK和Cancle的对话框')

'OK'

>>> pyautogui.prompt('输入对话框')

'This is what I typed in.'

下面是截屏功能:

>>> pyautogui.screenshot() # 返回pilllow图像模式

>>> pyautogui.screenshot('风火轮编程.png') #返回图像并保存到文件中

如果你想查找计算机屏上的某个图片,用locateOnScreen命令。以下是代码:

>>> pyautogui.locateOnScreen('风火轮编程_李兴球原创Python创意程序.png') # 返回找到的第一个矩形 (left, top, width, height)

(863, 417, 70, 13)

locateAllOnScreen命令能返回所有找到的图形,返回它们的矩形,以下是代码:

>>> for i in pyautogui.locateAllOnScreen('风火轮编程_李兴球_www.lixingqiu.com.png')

...

...

(863, 117, 70, 13)

(623, 137, 70, 13)

(853, 577, 70, 13)

(883, 617, 70, 13)

(973, 657, 70, 13)

(933, 877, 70, 13)

或像下面这样的代码也可以呀:

>>> list(pyautogui.locateAllOnScreen('www.scratch8.net.png'))

[(863, 117, 70, 13), (623, 137, 70, 13), (853, 577, 70, 13), (883, 617, 70, 13), (973, 657, 70, 13), (933, 877, 70, 13)]

下面的代码可以不断地获取鼠标指针坐标:

import pyautogui, sys

print('Press Ctrl-C to quit.') # 按Ctrl+C 中断

try:

while True:

x, y = pyautogui.position()

positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)

print(positionStr, end='')

print('\b' * len(positionStr), end='', flush=True)

except KeyboardInterrupt:

print('\n')

onScreen命令检测坐标是否在计算机屏幕范围内:

>>> pyautogui.onScreen(0, 0)

True

>>> pyautogui.onScreen(0, -1)

False

>>> pyautogui.onScreen(0, 99999999)

False

>>> pyautogui.size() # 屏幕尺寸

(1920, 1080)

>>> pyautogui.onScreen(1920, 1080)

False

>>> pyautogui.onScreen(1919, 1079)

True

拖动鼠标指针示例代码:

>>> pyautogui.dragTo(100, 200, button='left') # 按住左键,拖动鼠标指针到100,200坐标

>>> pyautogui.dragTo(300, 400, 2, button='left') # 按住左键,在2秒内拖动鼠标指针到100,200坐标

>>> pyautogui.drag(30, 0, 2, button='right') # 按住右键,在2秒内拖动鼠标指针到30,0坐标

下面的命令滚动鼠标,就是按滚轮模拟:

>>> pyautogui.scroll(10) # 向上滚动10次

>>> pyautogui.scroll(-10) # 向下滚动10次

>>> pyautogui.scroll(10, x=100, y=100) # 移动鼠标指针到100, 200, 然后滚动10次

以下是模拟键盘按键代码:

>>> pyautogui.keyDown('shift') # 按住shift键

>>> pyautogui.press('left') # 按左方向箭头

>>> pyautogui.press('left') # 按左方向箭头

>>> pyautogui.press('left') # 按左方向箭头

>>> pyautogui.keyUp('shift') # 松开shift键

下面是按键表:

['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(',

')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7',

'8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`',

'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',

'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',

'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace',

'browserback', 'browserfavorites', 'browserforward', 'browserhome',

'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear',

'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete',

'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10',

'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20',

'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',

'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja',

'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail',

'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack',

'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6',

'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn',

'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn',

'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator',

'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab',

'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen',

'command', 'option', 'optionleft', 'optionright']

查找屏幕上的像素:

>>> import pyautogui

>>> im = pyautogui.screenshot() # 获取快照,截屏

>>> im.getpixel((100, 200)) # 得到坐标点像素值

(130, 135, 144)

检测屏幕上某坐标点是否匹配像素值:

>>> import pyautogui

>>> pyautogui.pixelMatchesColor(100, 200, (130, 135, 144))

True

>>> pyautogui.pixelMatchesColor(100, 200, (0, 0, 0))

False

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值