目录
本文为原创作品,抄袭必究!
一、前言
二、pyautogui模块
三、鼠标相关操作
1、鼠标移动
2、获取鼠标位置
3、鼠标点击
4、按松鼠标
5、拖动窗口
6、上下滑动
7、小程序——鼠标操控术2.0
8、小程序——连点器
四、键盘相关操作
1、按键的按松
2、键入字符串
3、热键
4、小程序——轰炸器
5、小程序——520个我爱你
五、尾声
本文为原创作品,抄袭必究!
恭喜你,学明白类,你已经学会所有基本知识了。
这章算是一个娱乐篇,十分简单,了解一下pyautogui模块,这算是比较好学还趣味性十足的,而且可以做许多小程序。
本文会对ptautogui模块进行详细的学习and讲解。写作不易,支持一波~
pyautogui模块,规范一点大写就是PyAutoGUI模块,是用来实现自动化脚本的一个十分得力的小助手。他可以操控键盘和鼠标,可以写许多工具。
安装的话就用我们万能的pip包,相信大家已经安装过了,没安装的话网上有许多教程可以学。
win+R,输入cmd,再输入:
pip install pyautogui
你就安装成功了。之后可以输入import pyautogui,没报错就是成功。
接下来,我们就可以玩转鼠标和键盘了。模块名字比较长,建议用as取一个别名,但可别取成py啊。
我们先学习鼠标移动的相关。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格。
之后是position()函数,可以获取当前鼠标的位置。
import pyautogui as gui
import time
while True:
print(gui.position())
time.sleep(1)
这个程序可以隔1秒输出一次你的鼠标的位置。
如果要让鼠标点击,就要用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的位置双击左键,双击右键,双击中键。
如果我们要按松鼠标就要用mouseDown和mouseUp,mouseDown是按下,mouseUp是松开。
import pyautogui as gui
from time import sleep
print("落下")
gui.mouseDown()
sleep(1)
gui.mouseUp()
print("松开")
这个程序会先按下鼠标,等一秒松开。
要拖动一个窗口,如果想移动到一个位置用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一样?我也不知道咋回事,如果有人知道请在评论区指出,谢谢配合。
如果想上下滑动(就是移动滚轮),就要用scroll,要填一个参数,为移动的格数,默认是往上滑,加上-负号是往下滑。注意,滑动的时候鼠标必须停留在那个窗口上否则没用。
import pyautogui as gui
gui.scroll(-200)
这个程序会在鼠标停留页面往下滑动200格。
鼠标的用法就是这么多了。他可以做很多的自动化程序。
现在,让我们把刚才操控鼠标的程序完善一下。
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哦~
接下来,让我们尝试做一个连点器。
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还是太慢了,但也满足需求了。
接下来是键盘的相关操作。
按键按下,用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。
最好用的是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里面会发生转义,转义知不知道?
还有一个有用的函数,是hotkey,就是热键,快捷键,放上按键就能完成一次快捷键。
import pyautogui as gui
gui.hotkey('alt','tab')
这个程序运行之后会按下alt+tab,是不是很实用?
OK,键盘操作的学习就这么多了。是不是很简单?全是干货建议收藏。
接下来是一个小程序:轰炸器,帮你把网络喷子治得服服帖帖。
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秒
这里面,循环次数、等待时间是可以根据情况改变的。
当程序运行之后,复制轰炸内容,把光标点到你要轰炸的那个界面做好等待就行。n不nb?
运行效果:
再进行一下随机话语的功能。
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不能整中文还能更简便。注意运行的时候把输入法改回中文。
运行效果:
(希望图片能显示)在使用之前最好训练一下自己的输入法,不然输出可能不对,但大部分输入法都是可以固定首位的:
这样就不会出现输入错误的情况了,就算不能固定首位意思也大抵不会差。
以后遇到网络喷子,就用代码回击他好吧。
我们还可以完成现在很火的发送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还是有点慢了,可以耐心等等。
效果:
就是说n不nb吧?
PyAutoGUI模块是一个很好用也很好玩的自动化程序辅助,可以做出来许多自动化小程序,还是很好玩的。
学完基础的知识,就要和模块打交道了。这就是你学习的第一个模块。
作业:写出一个运行之后就自动打开CSDN的编辑界面的程序。思路启发:不一定要用打开连接的方式,通过自动搜索和点击可以完成。可以找一个电脑显示器坐标图来确定点击坐标。
写作不易,给个三连支持一波吧~~~~~~~~~~~
-----------------------------------------------------------END----------------------------------------------------------------