(程序员必备技能)基于Python的鼠标与键盘控制实战与源码
文章目录
- (程序员必备技能)基于Python的鼠标与键盘控制实战与源码
-
- 一、序言
- 二、配置环境
-
- 1.下载pyautogui包
- 三、鼠标控制
-
- 1、获取鼠标位置函数以及测试源码
- 2、控制鼠标左击/右击/双击函数以及测试源码
- 3、控制鼠标移动/拖动
- 3、控制鼠标滚轮滚动
- 四、键盘控制
-
- 1、控制输出单个键
- 2、控制键盘输出快捷键(同时输出多个键)
- 3、控制键盘长按某个键
- 4、控制键盘输出一段话
- 5、停顿一段时间
- 五、结语
-
- 1、电脑的眼睛
-
- a.调用电脑相机
- b.调用手机相机
- c.获取当前电脑屏幕
- 2、电脑的大脑
-
- a.图像匹配
- b.视觉Al
一、序言
使用python控制按键无疑非常重要的技能,特别是结合机器视觉更是能发挥出超强的实力!
二、配置环境
1.下载pyautogui包
pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/
注:如果有可能,可以在pycharm中进行以下Python控制的鼠标和键盘的测试与学习。
Pycharm与Anaconda3的下载与配置博客可以参考如下博客:Anaconda3和pycharm的下载指南
三、鼠标控制
注:由于这部分功能我不能通过截屏来显著表现出来,在程序运行结果就不截屏了,保持界面整洁
1、获取鼠标位置函数以及测试源码
#获取鼠标位置
import pyautogui as pg #没别的作用就单纯换个名字
try:
while True:
x,y=pg.position() #核心函数pg.position()
print(str(x)+" "+str(y)) #输出鼠标的x,y
except KeyboardInterrupt:
print("\n")
程序功能:
- 实时输出当前鼠标位置
核心函数:
函数名 | 功能 |
---|---|
pyautogui .position() | 返回当前鼠标的x,y坐标。 |
核心代码:
- 换名:第2行 import pyautogui as pg
- 输出鼠标位置:第5~6行
x,y=pg.position() #核心函数pg.position()
print(str(x)+" "+str(y)) #输出鼠标的x,y
2、控制鼠标左击/右击/双击函数以及测试源码
# 获取鼠标位置
import pyautogui as pg
try:
while True:
x, y = pg.position()
print(str(x) + " " + str(y)) #输出鼠标位置
if 1746 < x < 1800 and 2 < y < 33:
pg.click()#左键单击
if 1200 < x < 1270 and 600 < y < 620:
pg.click(button='right')#右键单击
if 1646 < x < 1700 and 2 < y < 33:
pg.doubleClick()#左键双击
except KeyboardInterrupt:
print("\n")
a.程序功能
在输出鼠标位置的基础,分别设置了三个区域,当鼠标达到这三个区域时候,进行左键单击、右键单击,左键双击。
b.核心函数
函数名 | 功能 |
---|---|
pyautogui.click() | 鼠标左键单击 |
pyautogui.click(button=‘right’) | 鼠标右键单击 |
pyautogui.doubleClick() | 鼠标左键双击 |
c.核心代码
1、触发某事件就控制鼠标点击:第9~14行
注:click()函数默认:button=‘left’
3、控制鼠标移动/拖动
# 3、控制鼠标移动/拖动demo
import pyautogui as pg
try:
while True:
x, y = pg.position()
print(str(x) + " " + str(y)) #输出鼠标位置
#实现鼠标绝对移动功能
if 1011 < x < 1357 and 320 < y < 527:
pg.moveTo(1750, 20, 2)#花2s从当前位置移动到(1750,20)
pg.click() # 左键单击
#实现鼠标相对移动功能
if 600 < x < 1000 and 305 < y < 425:
pg.move(0, 200) # 基于当前位置瞬间向下移动200像素
#实现鼠标拖动功能
if 1142<x<1391 and y<25:
pg.dragTo(300, 400, 2, button='left') #花2s从当前位置拖到(300,400)
except KeyboardInterrupt:
print("\n")
a.程序功能
在输出鼠标位置的基础,分别设置了三个区域,当鼠标达到这三个区域时候,分别进行绝对移动,相对移动,鼠标拖动三个运行演示。
注:在运行代码全,将Pycharm全屏演示效果更好哦
b.核心函数
函数名 | 功能 |
---|---|
pyautogui.moveTo() | 鼠标绝对移动 |
pyautogui.move() | 鼠标相对移动 |
pyautogui.dragTo() | 鼠标绝对拖动 |
c.核心代码
1、触发某事件就控制鼠标移动/拖动:第9~19行
注:click()函数默认:button=‘left’
3、控制鼠标滚轮滚动
import pyautogui as pg
# 执行鼠标滚轮的滚动。垂直滚动还是水平滚动取决于底层操作系统。
pg.scroll(100) # scroll up 50 "clicks"
注:是的就两行,如果你是放在上面中使用,应该算只要一行就可以实现了。
四、键盘控制
1、控制输出单个键
import pyautogui as pg
pg.press('q')
核心函数:
函数名 | 功能 |
---|---|
pyautogui.press() | 摁键 |
注:pyautogui.press(‘enter’)代表按下回车 | |
注:pg.press(‘left’)#左移 其中,left,down,up,right是代表键盘移动键 |
2、控制键盘输出快捷键(同时输出多个键)
功能:复制当前界面内容并粘贴
import pyautogui as pg
pg.hotkey('ctrl','a')
pg.hotkey('ctrl','c')
pg.click()
pg.hotkey('ctrl','v')
核心函数:
函数名 | 功能 |
---|---|
pyautogui.hotkey() | 支持同时摁多个键 |
3、控制键盘长按某个键
功能:复制当前界面内容并粘贴
import pyautogui as pg
pg.keyDown('ctrl')#摁定ctrl
pg.press('a')
pg.press('c')
pg.click()
pg.press('v')
pg.keyUp('ctrl')
#程序描述:相当于先摁住ctrl,然后分别摁‘a’,'c','v',然后再松开‘ctrl’
核心函数:
函数名 | 功能 |
---|---|
pyautogui.keyDown() | 长按不动 |
pyautogui.keyUp() | 释放按键 |
4、控制键盘输出一段话
import pyautogui as pg
#pg.write()参数从左到右分别是内容,输入每个字符停顿时间
pg.write('hello world !', interval=0.3)
注:pg.write不支持中文,如果出现中文就会空格替代
注:不过可以用拼音,粗糙表示如:
import pyautogui as pg
pg.write('nihao1 shijie1!', interval=0.3)#你好世界
注:运行前记得打开拼音。
核心函数:
函数名 | 功能 |
---|---|
pyautogui.write() | 输出一段字符串 |
5、停顿一段时间
功能:复制当前界面内容并粘贴
import pyautogui as pg
pg.hotkey('ctrl','a')
pg.PAUSE=0.5#停顿0.5s
pg.hotkey('ctrl','c')
pg.PAUSE=0.5
pg.moveTo(1500,300)#绝对移动到1500,300
pg.click()#点击一下,确定窗口
pg.PAUSE=0.5
pg.hotkey('ctrl','v')
核心函数:
函数名 | 功能 |
---|---|
pg.PAUSE | 停顿: 单位s |
五、结语
通过以上学习,利用pyautogui,你已经学会了如何用python模拟人类的绝大部分键盘/鼠标行为。
到了这里或许,你会疑惑我该怎么确定,电脑应该在哪里控制鼠标做出什么操作,哪里控制键盘,应该输入什么。人是怎么做到这些的?视觉与大脑!
简单来说,就是图像输入与图像处理部分,加上这一部分学会的一双‘手’,电脑才可以大放异彩。
1、电脑的眼睛
在这里不得不提到opencv,它实现了图像处理和计算机视觉方面的很多通用算法。
如果有兴趣可以在这里学习:OpenCV4 C++ 快速入门视频30讲 - 系列合集
a.调用电脑相机
import cv2
cap=cv2.VideoCapture(0) #打开默认相机0,如果有外接摄像头,修改这个为1
if cap!=None:
while True:
ref,img=cap.read()
cv2.imshow('video',img)
if cv2.waitKey(1)==27:
break
b.调用手机相机
可以看下面这个博客
使用手机摄像头做网络ip摄像头用opencv中打开
c.获取当前电脑屏幕
可以看下面这个博客
(必备技能)使用Python实现屏幕截图
2、电脑的大脑
a.图像匹配
有兴趣的检索一下:aircv
b.视觉Al
有兴趣的检索一下:yolo
下面这个博客可以参考一下
yolov5无从下手?一篇就够,2021年全部基于最新配置的yolo入门升级路线
结束。