目录
pynput是一个用于模拟、监听鼠标键盘操作的python库,可用于自动化办公,如自动签到。。。
1.处理键盘
包pynput.keyboard
包含控制和监听键盘的类。
1.1控制键盘
用pynput.keyboad.Controller
如下
from pynput.keyboard import Key, Controller
keyboard = Controller()
# 按下和释放空格
keyboard.press(Key.space)
keyboard.release(Key.space)
# 输入一个小写a;
keyboard.press('a')
keyboard.release('a')
# 两种方式录入大写A
keyboard.press('A')
keyboard.release('A')
with keyboard.pressed(Key.shift):
keyboard.press('a')
keyboard.release('a')
# 用快捷的方式录入 'Hello World'
keyboard.type('Hello World')
1.2监听键盘
用pynput.keyboard.Listener
如下:
from pynput import keyboard
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()
# 非阻塞模式
listener = keyboard.Listener(
on_press=on_press,
on_release=on_release)
listener.start()
键盘监听器是threading.Thread
的实例,所有回调都在同一线程中被调用,调用pynput.keyboard.Listener.stop
、触发StopException
或者在回调中返回False
来停止监听器。
当监听器使用上面代码中非阻塞方式时,当前的线程会继续执行(当和其他包含主循环的GUI框架集成的时候是这种情况),但是当在一个脚本里运行的时候,这会导致程序立即终止。
2.处理鼠标
pynput.mouse
这个包含了控制和监听鼠标的类。
2.1控制鼠标
用pynput.mouse.Controller
如下:
from pynput.mouse import Button, Controller
mouse = Controller()
# 获取指针位置
print('当前指针位置 {0}'.format(
mouse.position))
# 设置指针位置
mouse.position = (10, 20)
print('鼠标移动到 {0}'.format(
mouse.position))
# 相对于当前位置移动指针
mouse.move(5, -5)
# 点击、释放
mouse.press(Button.left)
mouse.release(Button.left)
# 双击
mouse.click(Button.left, 2)
# 向下滚动2步
mouse.scroll(0, 2)
2.2监听鼠标
用pynput.mouse.Listener
如下:
from pynput import mouse
def on_move(x, y):
print('指针移动到 {0}'.format(
(x, y)))
def on_click(x, y, button, pressed):
print('{0} at {1}'.format(
'按下' if pressed else '释放',
(x, y)))
if not pressed:
# 停止监听器
return False
def on_scroll(x, y, dx, dy):
print('{0} 滑动,位置 {1}'.format(
'向下' if dy < 0 else '向上',
(x, y)))
# 收集事件直到释放左键
with mouse.Listener(
on_move=on_move,
on_click=on_click,
on_scroll=on_scroll) as listener:
listener.join()
# 也可以使用非阻塞方式:
listener = mouse.Listener(
on_move=on_move,
on_click=on_click,
on_scroll=on_scroll)
listener.start()
鼠标监听器是threading.Thread
的实例,并且所有的回调都会在这个线程中被调用。调用pynput.mouse.Listener.stop
引发StopException
或者从回调返回False
可以停止监听器。
当监听器使用上面代码中非阻塞方式时,当前的线程会继续执行(当和其他包含主循环的GUI框架集成的时候是这种情况),但是当在一个脚本里运行的时候,这会导致程序立即终止。