利用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。

首先准备好电脑界面(便于指定鼠标单击的位置):

python3模拟硬件输入 python模拟键盘操作_python


代码如下所示:

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

运行结果:

python3模拟硬件输入 python模拟键盘操作_python3模拟硬件输入_02


  1. PyUserInput操作说明 ↩︎
  2. python3.6 怎样使用pymouse模拟鼠标键盘操作? ↩︎