程序员必备技能)基于Python的鼠标与键盘控制实战扩展与源码

简介: 这篇文章是关于如何使用Python的`pyautogui`库来控制鼠标和键盘进行各种操作,包括移动、点击、滚轮控制以及键盘的按键和快捷键输出,并介绍了如何结合图像处理和计算机视觉技术来扩展其应用。

(程序员必备技能)基于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坐标。

核心代码:

  1. 换名:第2行 import pyautogui as pg
  2. 输出鼠标位置:第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入门升级路线

结束。

相关文章
|
22天前
|
数据采集 数据可视化 数据挖掘
Python数据分析实战:Pandas处理结构化数据的核心技巧
在数据驱动时代,结构化数据是分析决策的基础。Python的Pandas库凭借其高效的数据结构和丰富的功能,成为处理结构化数据的利器。本文通过真实场景和代码示例,讲解Pandas的核心操作,包括数据加载、清洗、转换、分析与性能优化,帮助你从数据中提取有价值的洞察,提升数据处理效率。
96 3
|
22天前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
286 2
|
9天前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
130 0
|
7天前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
9天前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
15天前
|
开发工具 Android开发 开发者
用Flet打造跨平台文本编辑器:从零到一的Python实战指南
本文介绍如何使用Flet框架开发一个跨平台、自动保存的文本编辑器,代码不足200行,兼具现代化UI与高效开发体验。
124 0
|
17天前
|
算法 安全 数据安全/隐私保护
Python随机数函数全解析:5个核心工具的实战指南
Python的random模块不仅包含基础的随机数生成函数,还提供了如randint()、choice()、shuffle()和sample()等实用工具,适用于游戏开发、密码学、统计模拟等多个领域。本文深入解析这些函数的用法、底层原理及最佳实践,帮助开发者高效利用随机数,提升代码质量与安全性。
84 0
|
人工智能 供应链 前端开发
【精品问答】Python实战100例 | 技术日报(16期)
【精品问答】Python实战100例,确定不mark吗?还有云计算招聘岗位全方位需求解析+学习路径指南精彩直播,对云计算感兴趣的高校生、职场新人看过来~
561 0
|
9天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
180 102
|
9天前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
177 104

推荐镜像

更多