Pynput基础使用
Pynput基础使用
仅供自用查询,有疑问评论区留言。
pynput安装
pip install pynput
鼠标控制
from pynput.mouse import Controller,Button
pynput库中的mouse模块是鼠标控制模块
创建鼠标控制对象
mouse = Controller()
获取或设置鼠标位置
mouse.Controller中为我们提供了方法来获取和设置鼠标位置信息
# 获取鼠标位置
import pynput
from pynput.mouse import Controller,Button
mouse=Controller()
mouseposition = mouse.position
print("鼠标当前的位置是:{0}".format(mouseposition))
你可以看出返回的是一个元组,所以我们可以用解析式将他解析开
# 获取鼠标位置
x,y=mouse.position
print("鼠标x轴当前的位置是:{},鼠标y轴当前的位置是:{}".format(x,y))
我们可以通过对方法赋值的方式来修改鼠标位置
# 修改鼠标位置
mouseposition=mouse.position
print("修改前鼠标位置:{0}".format(mouseposition))
mouse.position=(490,500)
mouseposition=mouse.position
print("修改后鼠标位置:{0}".format(mouseposition))
鼠标执行点击和松开操作
mouse.Controller中为我们提供了点击和松开操作
Button模块为我们提供了左键,右键,中键操作
from time import sleep
print("请在2秒内移动到需要点击的位置。")
sleep(2)
mousePosition=mouse.position
print("需要点击的位置是:{0}".format(mousePosition))
# 模拟左键点击操作
mouse.position=(320,810)
mousePosition=mouse.position
mouse.press(Button.left)
mouse.release(Button.left)
# 模拟右键点击操作
mouse.position=(320,810)
mousePosition=mouse.position
mouse.press(Button.right)
mouse.release(Button.right)
mouse.Controller中为我们提供了点击封装。有两个参数,参数1:需要点击的按键,参数2:需要点击的次数
mouse.position=(320,810)
mousePosition=mouse.position
mouse.click(Button.left,1)
print("文件打开成功。")
鼠标监听
需要用到的模块:
Listener用于鼠标监听模块
from pynput.mouse import Listener,Button
监听创建方法
def mouseListener():
with Listener() as listener:
listener.join()
创建鼠标移动监听
# 此程序需要放到IDLE或者DOC模式下执行
from pynput.mouse import Listener,Button
def mouseListener(on_move):
with Listener(on_move=on_move) as listener:
listener.join()
def on_move(x,y):
print("当前鼠标位置:{0}".format((x,y)))
if __name__ == '__main__':
mouseListener(on_move)
鼠标点击事件
# 此程序需要放到IDLE或者DOC模式下执行
from pynput.mouse import Listener, Button
def mouseListener(on_click):
with Listener(on_click=on_click) as listener:
listener.join()
def on_click(x, y, button, pressed):
print("鼠标位置为:{},执行操作为:{},是否点击或松开:{}".format((x, y), button, pressed))
if __name__ == '__main__':
mouseListener(on_click)
监听鼠标点击、滚动、拖动
# 此程序需要放到IDLE或者DOC模式下执行
from pynput.mouse import Listener, Button
from pynput import mouse
def mouseListener(on_move,on_click,on_scroll):
with Listener(on_move=on_move,on_click=on_click,on_scroll=on_scroll) as listener:
listener.join()
def on_move(x,y):
pass
# print("当前鼠标位置:{0}".format((x,y)))
def on_click(x, y, button, pressed):
if button == mouse.Button.left:
print('left was pressed!')
elif button == mouse.Button.right:
print('right was pressed!')
else:
print('mid was pressed!')
print("鼠标位置为:{},执行操作为:{},是否点击或松开:{}".format((x, y), button, pressed))
if button == Button.middle:
return False
def on_scroll(x,y,dx,dy):
print("鼠标位置为:{},滑动坐标:{}".format((x,y),(dx,dy)))
if __name__ == '__main__':
mouseListener(on_move,on_click,on_scroll)
键盘控制
需要的模块
pynput库中提供了keyboard键盘控制模块
Controller这个对象用来创建控制对象
key这个提供键盘操作
创建键盘控制对象
from pynput.keyboard import Controller, Key
keyboard =Controller()
键盘按下
pynput.keyboard.Controller提供了点击和松开操作
import time
mouse.position=(320,810)
mousePosition=mouse.position
mouse.click(Button.left,1)
print("文件打开成功。")
time.sleep(3)
from pynput.keyboard import Controller, Key
keyboard =Controller()
keyboard.press("a")
keyboard.release("a")
keyboard.press("A")
keyboard.release("A")
特殊按键操作
# 按下空格
keyboard.press(Key.space)
keyboard.release(Key.space)
键盘组合键优化
# 切换界面
with keyboard.pressed(Key.alt):
keyboard.press(Key.tab)
keyboard.release(Key.tab)
键盘字符串输出
keyboard提供了type方法用于键盘输出一整个字符串
keyboard.type("输出字符!")
特殊符号输出
keyboard提供了touch方法使我们快速方便输入,参数1:需要输入的符号,参数2:是否输入(True or False)
keyboard.touch("&",True)
键盘监听
需要的模块
pynput库中的keyboard模块是鼠标控制模块
Listener 用于鼠标监听模块(使用方法类似open函数)
Key提供鼠标操作
无需创建对象
from pynput.keyboard import Listener,Key
键盘监听方法
def keyboardListener():
with Listener() as listener:
listener.join()
键盘输入监听
键盘按下
# 此程序需要放到IDLE或者DOC模式下执行
from pynput.keyboard import Listener, Key
def keyboardListener(on_press):
with Listener(on_press=on_press) as listener:
listener.join()
def on_press(key):
print("当前按下的是:{0}".format(key))
if __name__ == '__main__':
keyboardListener(on_press)
键盘释放
# 此程序需要放到IDLE或者DOC模式下执行
from pynput import keyboard
from pynput.keyboard import Listener, Key
def keyboardListener(on_press, on_release):
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
def on_press(key):
print("当前按下的是:{0}".format(key))
print(f'{key} :pushed')
def on_release(key):
# 按esc键退出
if key == keyboard.Key.esc:
return False
else:
print("当前松开的是:{0}".format(key))
if __name__ == '__main__':
keyboardListener(on_press, on_release)
监听鼠标键盘并写入工作日志
from pynput import keyboard, mouse
from loguru import logger
from threading import Thread
# 定义日志文件
logger.add('写入日志.log')
def on_press(key):
logger.debug(f'{key} :pushed')
def on_release(key):
if key == keyboard.Key.esc:
return False
# 定义键盘监听线程
def press_thread():
with keyboard.Listener(on_press=on_press, on_release=on_release) as lsn:
lsn.join()
def on_click(x, y, button, pressed):
if button == mouse.Button.left:
logger.debug('left was pressed!')
elif button == mouse.Button.right:
logger.debug('right was pressed!')
else:
return False
# 定义鼠标监听线程
def click_thread():
with mouse.Listener(on_click=on_click) as listener:
listener.join()
if __name__ == '__main__':
# 起两个线程分别监控键盘和鼠标
t1 = Thread(target=press_thread())
t2 = Thread(target=click_thread())
t1.start()
t2.start()
来源:牧文山