详解Python中键盘鼠标的相关操作
作者:?????? 发布时间:2021-04-17 23:39:02
一、前言
恭喜你,学明白类,你已经学会所有基本知识了。
这章算是一个娱乐篇,十分简单,了解一下pyautogui模块,这算是比较好学还趣味性十足的,而且可以做许多小程序。
本文会对ptautogui模块进行详细的学习and讲解。写作不易,支持一波~
二、pyautogui模块
pyautogui模块,规范一点大写就是PyAutoGUI模块,是用来实现自动化脚本的一个十分得力的小助手。他可以操控键盘和鼠标,可以写许多工具。
安装的话就用我们万能的pip包,相信大家已经安装过了,没安装的话网上有许多教程可以学。
win+R,输入cmd,再输入:
pip install pyautogui
你就安装成功了。之后可以输入import pyautogui,没报错就是成功。
接下来,我们就可以玩转鼠标和键盘了。模块名字比较长,建议用as取一个别名,但可别取成py啊。
三、鼠标相关操作
1、鼠标移动
我们先学习鼠标移动的相关。first了解一下计算机的坐标系统。
计算机显示器的分辨率一般是1920x1080,有的不一样,我们用size函数来获取用户显示器的分辨率。他会返回两个值,要用两个变量保存。
import pyautogui as gui
a,b=gui.size()
print(a,b)
输出:1920 1080(根据用户显示器大小而定宽度、长度)
注意,就算是分辨率我们也要用“减一”原则,例如你的显示器宽度1920,那么最左边是0,最右边是1919,1920就越界了。
如果我们想让鼠标移动,就要用moveTo,注意T是大写。他可以填入两个参数:移动地点的x坐标,y坐标。
import pyautogui as gui
gui.moveTo(1919,1079)
这个程序可以让鼠标瞬移到右下角,是不是很nb?
还可以填第三个参数,是移动所需要的时间,默认0秒。
注意:在鼠标移动的过程中,要是移动鼠标他会给你拉回原位置,相当于固定住了,所以把时间调长容易直接动不了,非常的难受。
这里,教给大家一个东西。pyautogui模块里面自带了神奇的变量:FAILSAFE,默认为True。当这个变量为True时,如果鼠标控制不了了,你就使劲往左上角拉,程序就会报错。
import pyautogui as gui
gui.FAILSAFE =True
gui.moveTo(1919,1079,5)
这段代码鼠标会移动到右下角,如果在这个过程中使劲往左上角拉就会报错。
接下来,我们就可以做一个简单的小程序——鼠标操控术。
import pyautogui as gui
import random as r
gui.FAILSAFE =True
a=0
print("嘎嘎嘎你的鼠标被我 操控了")
while a<=100:
gui.moveTo(r.randint(1,1919),r.randint(1,1079))
a+=1
这个程序运行后,会把你的鼠标随机移动到任意地方100次。
你可以自己调整循环次数来整你的好友,前提是他的电脑要有python。
我们把FAILSAFE设置为了True,控制不住的时候就使劲往左上移动就行,要是想整蛊好友就设置成False。好玩不?
另外,如果想在原有基础上移动,就用move。
import pyautogui
pyautogui.move(100,100,2)
例如这个程序,会花2秒将鼠标往右移动100格,往下移动100格。
2、获取鼠标位置
之后是position()函数,可以获取当前鼠标的位置。
import pyautogui as gui
import time
while True:
print(gui.position())
time.sleep(1)
这个程序可以隔1秒输出一次你的鼠标的位置。
3、鼠标点击
如果要让鼠标点击,就要用click函数。
pyautogui.click(0,0,button='left')
pyautogui.click(0,0,button='right')
pyautogui.click(0,0,button='middle')
前两个值还是点击的xy坐标,第三个值是点击的键,记住要用关键字参数的形式,left是左键,right是右键,middle是中键。这个程序是分别用左键右键中键点击左上角。
如果要双击左键,用doubleClick,双击右键用rightClick,双击中键用middleClick。他们三个用法相近,还是要填xy坐标。
pyautogui.doubleClick(10,10)
pyautogui.rightClick(10,10)
pyautogui.middleClick(10,10)
运行之后会在10,10的位置双击左键,双击右键,双击中键。
4、按松鼠标
如果我们要按松鼠标就要用mouseDown和mouseUp,mouseDown是按下,mouseUp是松开。
import pyautogui as gui
from time import sleep
print("落下")
gui.mouseDown()
sleep(1)
gui.mouseUp()
print("松开")
这个程序会先按下鼠标,等一秒松开。
5、拖动窗口
要拖动一个窗口,如果想移动到一个位置用dragTo,还是两个参数为xy坐标,第三个参数为时间,默认为0。
import pyautogui as gui
gui.dragTo(0,0,3)
这个程序会把按住的窗口用3秒拖动到左上角。
如果想在原位置的基础上移动用dragRel,前两个参数为要往右移动多少和往下移动多少,第三个参数为时间。
import pyautogui as gui
gui.dragRel(200,0,3)
这个程序会把按住的窗口用三秒时间往右移动200像素。
同样,还有一个drag,因为网上我也没查到相关资料,自己试验出来的效果···好像和dragRel一样?我也不知道咋回事,如果有人知道请在评论区指出,谢谢配合。
6、上下滑动
如果想上下滑动(就是移动滚轮),就要用scroll,要填一个参数,为移动的格数,默认是往上滑,加上-负号是往下滑。注意,滑动的时候鼠标必须停留在那个窗口上否则没用。
import pyautogui as gui
gui.scroll(-200)
这个程序会在鼠标停留页面往下滑动200格。
7、小程序——鼠标操控术2.0
鼠标的用法就是这么多了。他可以做很多的自动化程序。
现在,让我们把刚才操控鼠标的程序完善一下。
import pyautogui as gui
import random as r
gui.FAILSAFE =True
a=0
print("嘎嘎嘎你的鼠标被我 操控了")
while a<=100:
b=r.randint(1,3)
if b==1:
gui.moveTo(r.randint(1,1919),r.randint(1,1079))
if b==2:
gui.click(r.randint(1,1919),r.randint(1,1079),button='left')
if b==3:
gui.dragTo(r.randint(1,1919),r.randint(1,1079))
a+=1
这个程序还会在原有的基础上乱点,滑动,整蛊好友的时候别忘了改成False哦~
8、小程序——连点器
接下来,让我们尝试做一个连点器。
import pyautogui as gui#导入pyautogui模块
from time import sleep#导入time中的sleep函数
gui.SAILSAFE=True#开启安全功能
a=int(input("要点击几次?"))#获取点击次数
print("5秒后程序将运行,请将光标悬浮于连点界面上,如果控制不住鼠标请把鼠标往左上角滑动")#提示
sleep(5)#预留时间
x,y=gui.position()#获取鼠标坐标
for i in range(a):#重复执行
gui.click(x,y)#点击
print("连点结束")#提示
效果:
加上我的手速也才点了这么多,python还是太慢了,但也满足需求了。
四、键盘相关操作
接下来是键盘的相关操作。
1、按键的按松
按键按下,用keyDown,按键起来用keyUp,这俩要配合起来用。
import pyautogui as gui
gui.keyDown("shift")
gui.keyUp("shift")
这个程序就是按下松开一次shift。
要是不想多打字就用press,它就相当于同时调用keyDown和keyUp。
import pyautogui as gui
gui.press("shift")
他与上一个程序效果一样。
如果想按多个键就用列表给他包起来就行了。
import pyautogui as gui
gui.press(['a','left','b'])
这个程序会按a,再按左键,再按b,之后就相当于按了ba。
2、键入字符串
最好用的是typewrite,就是输入一个字符串。注意:一定要确保光标位置,不然没有用。
import pyautogui as gui
gui.typewrite('666')
这个程序会在指定位置输入666。注意:typewrite只能输入英文,中文不起作用。
typewrite如果后面再放一个参数,就代表输入每一个字母的间隔时间。
import pyautogui as gui
gui.typewrite('python',1)
这个程序运行之后,会隔1秒输入1个字符,输出完python一共要5秒。
是不是很厉害?
它还可以放在列表里来输出多个字符串,例如这个程序:
import pyautogui as gui
gui.typewrite(['a','left','b'])
注意:这里的left可是左方向键的意思,程序会把他转换,他会键入ba。
有人问了:typewrite和press有啥区别啊?
没认真看吧?typewrite的意思是输入字符串,press是敲击键盘。left只是在typewrite里面会发生转义,转义知不知道?
3、热键
还有一个有用的函数,是hotkey,就是热键,快捷键,放上按键就能完成一次快捷键。
import pyautogui as gui
gui.hotkey('alt','tab')
这个程序运行之后会按下alt+tab,是不是很实用?
OK,键盘操作的学习就这么多了。是不是很简单?全是干货建议收藏。
4、小程序——轰炸器
接下来是一个小程序:轰炸器,帮你把网络喷子治得服服帖帖。
import pyautogui as gui#导入PyAutoGUI模块
import time#导入时间模块
print("三秒之后,程序将会进行轰炸,请复制自己的轰炸文本,做好心理准备")#提示
time.sleep(3)#预留时间切换界面
a=0#初始化变量
while a<100:#重复100次
a+=1#a自增
gui.hotkey('ctrl','v')#按下ctrl+v
gui.hotkey('ctrl','enter')#按下ctrl+enter
time.sleep(0.3)#等待0.3秒
这里面,循环次数、等待时间是可以根据情况改变的。
当程序运行之后,复制轰炸内容,把光标点到你要轰炸的那个界面做好等待就行。
运行效果:
再进行一下随机话语的功能。
import pyautogui as gui#导入PyAutoGUI模块并起名gui
from time import sleep#导入时间模块里面的sleep
from random import randint#导入随机数模块里面的randint
print("三秒之后,程序将会进行轰炸,做好心理准备")#提示
sleep(3)#预留时间切换界面
a=0#初始化变量
while a<100:#重复100次
a+=1#a自增
c=randint(1,3)#设置随机数
if c==1:#如果c是1
gui.press(['s','h','a','b','i','1'])#就输入《优美的中国话》
elif c==2:#如果c是2
gui.press(['c','a','o','n','i','m','a','1'])#就输入《还是优美的中国话》
else:#如果c是3
gui.press(['g','u','n','n','i','m','a','1'])#就输入《十分优美的中国话》
gui.hotkey('ctrl','enter')#按下ctrl+enter
sleep(0.3)#等待0.3秒
这些话语可以调整,拿c=1的情况举例,这时候就会敲击键盘上的shabi,之后按1就完成了。要不是typewrite不能整中文还能更简便。注意运行的时候把输入法改回中文。
运行效果:
(希望图片能显示)在使用之前最好训练一下自己的输入法,不然输出可能不对,但大部分输入法都是可以固定首位的:
这样就不会出现输入错误的情况了,就算不能固定首位意思也大抵不会差。
以后遇到网络喷子,就用代码回击他好吧。
5、小程序——520个我爱你
我们还可以完成现在很火的发送520个我爱你。
import pyautogui as gui#导入PyAutoGUI模块并起名gui
from time import sleep#导入时间模块里面的sleep
sleep(3)#预留时间切换界面
a=0#初始化变量
while a<=520:#重复520次
a+=1#a自增
gui.press(['w','o','a','i','n','i','1'])#敲击woaini,选择第一项来输入“我爱你“
gui.typewrite(str(a))#键入字符串a
gui.press('enter')#敲击enter
gui.hotkey('ctrl','enter')#打字完毕ctrl+enter发送
python还是有点慢了,可以耐心等等。
效果:
五、尾声
PyAutoGUI模块是一个很好用也很好玩的自动化程序辅助,可以做出来许多自动化小程序,还是很好玩的。
学完基础的知识,就要和模块打交道了。这就是你学习的第一个模块。
来源:https://blog.csdn.net/C_ygxb/article/details/128376678


猜你喜欢
- 一、安装SSL证书的环境Apache安装目录:E:phpStudyPHPTutorialApache以上为windows下测试SSL证书安装
- 本文实例为大家分享了python网络爬虫的笔记,供大家参考,具体内容如下(一) 三种网页抓取方法1、 正则
- 在现实的图像操作软件中,经常碰到的不是给出放大多少倍,而是由用户在软件的界面上选择多大的区域,或者选择几个点,那么这样情况下,怎么样来计算出
- 前言今天继续为大家更新Go语言学习记录的文章。首先说明pointer指针和switch是两个并没有直接关系的知识点,放在一篇文章中将的原因是
- 导语提到《俄罗斯方块》(Tetris),那真是几乎无人不知无人不晓。其历史之悠久,可玩性之持久,能手轻轻一挥,吊打一 * 游戏。对于绝大多数小
- 一. ADO.NET的定义ADO.NET来源于COM组件库ADO(即ActiveX Data Objects),是微软公司新一代.NET数据
- 前言select作为Go chan通信的重要监听工具,有着很广泛的使用场景。select的使用主要是搭配通信case使用,表面上看,只是简单
- 引言上一篇文章中引入了消息队列对秒杀流量做削峰的处理,我们使用的是Kafka,看起来似乎工作的不错,但其实还是有很多隐患存在,如果这些隐患不
- 在学习Python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术,高强度、高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一
- Python的for循环十分灵活,使用for循环我们可以很轻松地遍历一个列表,例如:a_list = ['z', '
- 倒排索引一 倒排索引是什么倒排索引源于实际应用中需要根据属性的值来查找记录,这种索引表中的每一个项都包括一个属性值和具有该属性值的各记录的地
- 使用Django中遇到这样一个需求,对一个表的几个字段做 联合唯一索引,例如学生表中 姓名和班级 2个字段在一起表示一个唯一记录。Djang
- 如下所示:1. 在PyCharm下安装pyinstaller2. 在Terminal下输入:“pyinstaller -F -w *.py”
- 一、Sql Server中的日期与时间函数 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加
- js的eval代码快速解密有一段js代码内容如下:eval(function(E,I,A,D,J,K,L,H){function C(A)后
- 前言主要介绍OpenCV中的分水岭算法、图像金字塔对图像进行分割的方法。一、使用分水岭算法分割图像分水岭算法的基本原理为:将任意的灰度图像视
- 简介🤔看了一圈,大家对 ts 封装 axios 都各有见解。但都不是我满意的吧,所以自己封装了一个💪。至于为什么敢叫最佳实践,因为我满意,就
- 背景:不久前,设计实现了京东api的功能,发现如果换了其它快递再重新设计,岂不是会浪费太多的时间,所以选个第三方提供的快递API是最为合理的
- 前言 PCA降维,一般是用于数据分析和机器学习
- 在训练循环中,定期调用 saver.save() 方法,向文件夹中写入包含了当前模型中所有可训练变量的 checkpoint 文件。save