程序员必备技能)基于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入门升级路线

结束。

相关文章
|
7天前
|
缓存 监控 测试技术
Python中的装饰器:功能扩展与代码复用的利器###
本文深入探讨了Python中装饰器的概念、实现机制及其在实际开发中的应用价值。通过生动的实例和详尽的解释,文章展示了装饰器如何增强函数功能、提升代码可读性和维护性,并鼓励读者在项目中灵活运用这一强大的语言特性。 ###
|
9天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第36天】本文将带你走进Python的世界,从基础语法出发,逐步深入到实际项目应用。我们将一起探索Python的简洁与强大,通过实例学习如何运用Python解决问题。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供有价值的指导和灵感。让我们一起开启Python编程之旅,用代码书写想法,创造可能。
|
11天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
33 4
|
9天前
|
人工智能 Shell 开发工具
[oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
9 1
|
10天前
|
机器学习/深度学习 数据可视化 数据处理
Python数据科学:从基础到实战
Python数据科学:从基础到实战
18 1
|
11天前
|
机器学习/深度学习 JSON API
Python编程实战:构建一个简单的天气预报应用
Python编程实战:构建一个简单的天气预报应用
26 1
|
6天前
|
数据采集 存储 数据处理
探索Python中的异步编程:从基础到实战
【10月更文挑战第39天】在编程世界中,时间就是效率的代名词。Python的异步编程特性,如同给程序穿上了一双翅膀,让它们在执行任务时飞得更高、更快。本文将带你领略Python异步编程的魅力,从理解其背后的原理到掌握实际应用的技巧,我们不仅会讨论理论基础,还会通过实际代码示例,展示如何利用这些知识来提升你的程序性能。准备好让你的Python代码“起飞”了吗?让我们开始这场异步编程的旅程!
14 0
|
10天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
Linux C语言 开发者
源码安装Python学会有用还能装逼 | 解决各种坑
相信朋友们都看过这个零基础学习Python的开篇了
447 0
源码安装Python学会有用还能装逼 | 解决各种坑