利用python实现模拟鼠标和键盘的相关操作,可以实现对判断结果可视化。(或者实现一些其他的有趣的功能)
1. 环境配置
python3.5的PyMouse和PyKeyboard模块都集成到了PyUserInput模块中。1
因此需要确保已经完成了PyUserInput模块的安装。如果尚未完成可照我另一篇博文:
windows7 Anaconda3 pyuserinput模块安装指南(解决pip install无法使用)
2. 操作思路
PyMouse模块是一个模拟鼠标的类,集成在【pymouse】包中,包含了move, click, press等方法,分别可以模拟鼠标的移动、点击等操作。鼠标所在位置是基于电脑屏幕分辨率、由用户指定的。即,将电脑屏幕看做一个二维平面,每个像素为平面坐标系中的一个点,原点在左上角,x轴和y轴分别向右向下延伸。据此对鼠标定位。
PyKeyboard模块是一个模拟键盘的类,集成在【pykeyboard】包中,包含了press_key, release_key等方法,分别可以模拟按键和松开的操作,另有一些方法可以实现同时按键。
3. 开始使用
- 导入函数库
from pymouse import * # 模拟鼠标所使用的包
from pykeyboard import * # 模拟键盘所使用的包
import time # 连续进行两个动作可能太快而效果不明显,因此加入暂停时间
- 实例化
m = PyMouse() # 鼠标的实例m
k = PyKeyboard() # 键盘的实例k
- 模拟鼠标操作
x_dim, y_dim = m.screen_size() # 获取屏幕尺寸(一般为电脑屏幕的分辨率,如1920*1080)
# 估计需要点击的位置坐标(不知道有没有定位代码,我没找到,我是自己估计的。例如,我的电脑屏幕为(1920,1080),我想要单击的地方估计坐标为(10,500))
m.move(10, 500) # 将鼠标移动到位(此步可忽略,直接单击也可)
time.sleep(0.5) # 暂停0.5s,方便观察移动结果
m.click(10, 500, 1, 1) # 表示在(10, 500)的地方,单击左键
鼠标操作说明
m.move(x, y) # 鼠标移动到坐标(x, y)
m.click(x, y, button, n) # 鼠标点击。x,y–坐标, button–按键选项(1为左键,2为右键),n–点击次数(默认1此,2表示双击,仅此两个值)
m.screen_size() # 获取屏幕尺寸,返回两个值分别为长和宽
- 模拟键盘操作
k.type_string('hello world') # 模拟键盘输入字符串
k.press_key(‘H’) –模拟键盘按H键
k.release_key(‘H’) –模拟键盘松开H键
键盘操作说明2
单个按键
代码 | 功能 |
k.type_string(‘Hello, World!’) | 模拟键盘输入字符串 |
k.press_key(‘H’) | 模拟键盘按H键 |
k.release_key(‘H’) | 模拟键盘松开H键 |
k.tap_key(“H”) | 模拟点击H键 |
k.tap_key(‘H’,n=2,interval=5) | 模拟点击H键,2次,每次间隔5秒 |
k.tap_key(k.function_keys[5]) | 点击功能键F5 |
k.tap_key(k.numpad_keys[5],3) | 点击小键盘5,3次 |
组合键(例如同时按alt+tab键盘 )
代码 | 功能 |
k.press_key(k.alt_key) | 按住alt键 |
k.tap_key(k.tab_key) | 点击tab键 |
k.release_key(k.alt_key) | 松开alt键 |
常见的键和键值码(例如Page Up键可用数字33实现)见网页:
用python代码模拟键盘输入
4. 完整应用示例
接下来将用代码实现:打开记事本,切换输入法,键入hello world。
首先准备好电脑界面(便于指定鼠标单击的位置):
代码如下所示:
from pykeyboard import *
from pymouse import *
import time
m = PyMouse() # 鼠标对象
k = PyKeyboard() # 键盘对象
x_dim, y_dim = m.screen_size() # 获得屏幕尺寸
print('屏幕尺寸为: ', x_dim, y_dim)
m.move(7, 510)
time.sleep(0.5) # 留点时间鼠标移动到该位置
m.click(7, 510, 1, 1) # 在坐标(7,510)处单击左键
time.sleep(0.5)
k.tap_key(16) # 按下shift键,切换至英文输入法
k.type_string('hello world') # 在记事本中键入hello world
运行结果:
- PyUserInput操作说明 ↩︎
- python3.6 怎样使用pymouse模拟鼠标键盘操作? ↩︎