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

结束。

相关文章
|
20天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
17天前
|
SQL 存储 数据挖掘
使用Python和PDFPlumber进行简历筛选:以SQL技能为例
本文介绍了一种使用Python和`pdfplumber`库自动筛选简历的方法,特别是针对包含“SQL”技能的简历。通过环境准备、代码解析等步骤,实现从指定文件夹中筛选出含有“SQL”关键词的简历,并将其移动到新的文件夹中,提高招聘效率。
36 8
使用Python和PDFPlumber进行简历筛选:以SQL技能为例
|
20天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
44 10
|
28天前
|
JSON 开发工具 git
基于Python和pygame的植物大战僵尸游戏设计源码
本项目是基于Python和pygame开发的植物大战僵尸游戏,包含125个文件,如PNG图像、Python源码等,提供丰富的游戏开发学习素材。游戏设计源码可从提供的链接下载。关键词:Python游戏开发、pygame、植物大战僵尸、源码分享。
|
1月前
|
算法 Unix 数据库
Python编程入门:从基础到实战
本篇文章将带你进入Python编程的奇妙世界。我们将从最基础的概念开始,逐步深入,最后通过一个实际的项目案例,让你真正体验到Python编程的乐趣和实用性。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你提供有价值的信息和知识。让我们一起探索Python的世界吧!
|
1月前
|
并行计算 调度 开发者
探索Python中的异步编程:从基础到实战
在Python的世界里,异步编程是一种让程序运行更加高效、响应更快的技术。本文不仅会介绍异步编程的基本概念和原理,还将通过具体代码示例展示如何在Python中实现异步操作。无论你是初学者还是有经验的开发者,都能从中获益,了解如何运用这一技术优化你的项目。
|
1月前
|
数据处理 Python
探索Python中的异步编程:从基础到实战
在Python的世界中,“速度”不仅是赛车手的追求。本文将带你领略Python异步编程的魅力,从原理到实践,我们不单单是看代码,更通过实例感受它的威力。你将学会如何用更少的服务器资源做更多的事,就像是在厨房里同时烹饪多道菜而不让任何一道烧焦。准备好了吗?让我们开始这场技术烹饪之旅。
|
1月前
|
机器学习/深度学习 数据采集 人工智能
机器学习入门:Python与scikit-learn实战
机器学习入门:Python与scikit-learn实战
50 0
|
API Sentinel Python
C扩展Python
使用C扩展Python PyErr_*()函数是将一个异常对象压入到Python解释器的异常栈中 PyErr_Clear()函数是将Python异常栈中栈顶的元素弹出, 调用这个函数通常就相当于在Python程序中的try: except: 语句中except的作用 Python中的API, 每一...
815 0
|
21天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!