PyAutoGUI一个好玩的Python库(控制鼠标键盘)

跑步突发奇想,想搞懂脚本的原理,回来查了查,比如实现一个自动发送消息的脚本,无非就是编辑一行消息然后回车发送仅此而已,那用Python控制键盘来发送我们定制好的脚本不久可以解决,于是查了查,发现了这个库Pyautogui可以直接控制键盘和鼠标

基本操作

pyautogui的函数 

moveTo(x,y)                将鼠标移动到指定的 x、y 坐标   (屏幕以左上角为原点(0,0),向下y增加,向右x增加)

moveTo(x,y,duration)  使用duration值设置几秒后移动鼠标到指定的 x、y 坐标

moveRel (x,y)             相对于当前的鼠标位置移动鼠标。

size()                                  获得屏幕的width和height值

position()                            获得当前鼠标的位置

locateOnScreen(' *.png')   在屏幕上通过图像识别找到与图像相同的位置,并返回坐标size

center(size)                       可通过locateOnScreen获得的图像坐标对象,并返回其图像上的 中心点坐标(可用moveTo,移动到此处)

dragTo(x,y)                 按下左键移动鼠标。

dragRel (x,y)              按下左键,相对于当前位置移动鼠标。

click(x,y,button)       模拟点击(默认是左键)。

rightClick()                         模拟右键点击。

middleClick()                     模拟中键点击。

doubleClick()                     模拟左键双击。

mouseDown(x,y,button)模拟在 x、y 处按下指定鼠标按键。

mouseUp(x,y,button)模拟在 x、y 处释放指定键。

scroll (units)                  模拟滚动滚轮。正参数表示向上滚动,负参数表示向下滚动。

typewrite(message)      键入给定消息字符串中的字符。

typewrite([key1,key2])键入给定键字符串,只能是英文。

press(key)                     按下并释放给定键。

keyDown(key)               模拟按下给定键,不释放。

keyUp(key)                   模拟释放给定键。

hotkey([key1,key2])   模拟按顺序按下给定键字符串,然后以相反的顺序释放,(实现粘贴复制操作)

pyautogui.PAUSE=1    将pyautogui.PAUSE 设置为 1,即每次函数调用后暂停一秒。

pyautogui.FAILSAFE=True  启动自动防故障功能

 

制作一个自动发送消息的脚本

有个bug就是当前的脚本还不能执行中文的输出,所以我们用到了另一个库pyperclip,这两个库结合就可以实现自动的输出中文脚本了,原理就是,pyperclip可以实现自动的复制,然后pyautogui就可以通过typewrite实现ctrl+v的输出。

pyperclip.copy(item)
pyautogui.hotkey('\n','ctrl', 'v','\n')

下面我们又加了需求,比如脚本一般是我让它开始它才开始的,所以我们还需要对程序进一步的进行深入的构建。

pynput库可以实现键盘的监听

from pynput.keyboard import Listener
import time


def on_press(key):
    pass


def on_release(key):
    all_key.append(str(key))
    print(all_key)
    if "'r'" in all_key:
        print("开大招了")
        all_key.clear()

    if "'q'" in all_key:
        print("开q技能了")
        all_key.clear()

    if "'w'" in all_key:
        print("开w技能了")
        all_key.clear()
    if "'e'" in all_key:
        print("开e技能了")
        all_key.clear()

    if 'Key.ctrl_l' in all_key and "'c'" in all_key:  # ctrl+c
        print('这是复制键')
        all_key.clear()

    if 'Key.ctrl_l' in all_key and "'v'" in all_key:  # ctrl+v
        print('这是粘贴键')
        all_key.clear()

    try:
        if all_key[-1] == 'Key.ctrl_l':
            time1 = time.time()
            while True:
                if time.time() - time1 >= 1:
                    all_key.clear()
                    break
    except:
        pass

    # if key == Key.esc:  # 停止监听
    #     return Falseurn False


def start_listen():
    with Listener(on_press=None, on_release=on_release) as listener:
        listener.join()


if __name__ == '__main__':
    all_key = []
    start_listen()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值