Python应用之脚本篇1--控制鼠标键盘

一、pynput库

(一)简介

        pynput是一个Python的第三方库,它允许你控制和监控输入设备。该库提供了一个简单的接口来处理键盘鼠标事件,包括按键和鼠标移动、点击等。这个库非常适合用于自动化测试、游戏辅助脚本、快捷键映射等场景。 pynput可以通过pip命令来进行安装,如下所示:

pip install pynput

对于鼠标和键盘,pynput包含不同的子包来控制该种设备:

from pynput import mouse        # 鼠标包
from pynput import keybaord     # 键盘包

每个子包又都包含监控和控制两个类:

from pynput import mouse, keybaord

Listener_mouse = mouse.Listener        # 鼠标监听类
Listener_key = keybaord.Listener       # 键盘监听类
control_mouse = mouse.Controller()     # 鼠标控制类
control_key = keybaord.Controller()    # 键盘控制类

(二)监听鼠标和键盘事件

from pynput import mouse, keybaord

### 鼠标事件监听
Listener_mouse = mouse.Listener(on_move=on_move, on_click=on_click, on_scroll)
Listener_mouse.start()    # 开始监听
def on_move(x, y):    # 鼠标移动监听
    print(f'当前位置: ({x}, {y})')
    Listener_mouse.stop()    # 结束监听
def on_click(x, y, button, pressed):    # 鼠标点击监听
    print(f'点击位置: ({x}, {y})')
    print(f'点击按钮: {button}')
    print(f'点击状态: {"按下" if pressed else "松开"}')
    Listener_mouse.stop()    # 结束监听
def on_scroll(x, y, dx, dy):    # 鼠标滚轮滑动监听
    print(f'滚动位置: ({x}, {y})')
    print(f'滚动方向: ({dx}, {dy})')
    Listener_mouse.stop()    # 结束监听

### 键盘事件监听
def on_press(key):    # 键盘按键按下监听
    try:
        print('字母数字键 {0} 被按下'.format(key.char))
    except AttributeError:
        print('特殊按键 {0} 被按下'.format(key))
def on_release(key):    # 鼠标按键释放监听
    print('{0} 被释放'.format(key))
    if key == keyboard.Key.esc:
        return False
# 收集事件直到按键释放
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

*注:with语句和listener.start()、listener.stop()是两种监听鼠标和键盘的方法,可以相互替换。当使用with语句监听时,任意一个函数返回False时或出现异常时,就会结束监听进程。

(三)控制鼠标和键盘

### 键盘事件监听
from pynput import mouse, keybaord

control_mouse = mouse.Controller()
control_key = keybaord.Controller()

## 控制鼠标
position_mouse = control_mouse.position    # 获取鼠标当前的位置坐标,以元组的形式保存
print(position_mouse)                      # 打印位置坐标
control_mouse.position = (100, 100)    # 改变鼠标的位置至(100, 100)
control_mouse.move(10, 10)             # 移动鼠标至位置(10, 10)
control_mouse.press(mouse.Button.left)        # 按下鼠标左键
control_mouse.press(mouse.Button.right)       # 按下鼠标右键
control_mouse.press(mouse.Button.middle)      # 按下鼠标中键
control_mouse.release(mouse.Button.left)      # 释放鼠标左键
control_mouse.click(mouse.Button.left, 1)     # 单击鼠标左键
control_mouse.click(mouse.Button.left, 2)     # 双击鼠标左键
control_mouse.scroll(0, -100)                 # 鼠标滚轮向上滑动
control_mouse.scroll(0, 100)                  # 鼠标滚轮向下滑动

## 控制键盘
control_key.press(keyboard.KeyCode.from_char(“a”))    # 按下“a”键
control_key.press(“a”)                                # 按下“a”键
control_key.release(keyboard.KeyCode.from_char(“a”))  # 释放“a”键                        
control_key.release(“a”)                              # 释放“a”键

# 同时按下“a”键和“shift”键
with control_key.pressed(keyboard.Key.shift):
    control_key.press('a')
    control_key.release('a')

# 顺序按下按键,逆序释放按键
with keyboard.Controller.pressed(
        keyboard.Key.ctrl,
        keyboard.Key.shift,
        's'):
    pass
with keyboard.Controller.released(
        's',
        keyboard.Key.shift,
        keyboard.Key.ctrl):
    pass

# 输出字符串
control_key.type('hello word.')

*注:使用pressed()方法的时候加上with封装,进入语句时顺序按下提供的按键,退出时逆序释放按键。

二、pyautogui

(一)简介

(二)通用功能

(三)控制鼠标和键盘

(四)消息窗口和截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值