python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python键盘鼠标操作

详解Python中键盘鼠标的相关操作

作者:¿¿¿¡¡¡

pyautogui模块,规范一点大写就是PyAutoGUI模块,是用来实现自动化脚本的一个十分得力的小助手。他可以操控键盘和鼠标,可以写许多工具。本文就来讲讲如何利用这个模块实现键盘鼠标的相关操作,需要的可以参考一下

一、前言

恭喜你,学明白类,你已经学会所有基本知识了。

这章算是一个娱乐篇,十分简单,了解一下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模块是一个很好用也很好玩的自动化程序辅助,可以做出来许多自动化小程序,还是很好玩的。

学完基础的知识,就要和模块打交道了。这就是你学习的第一个模块。

以上就是详解Python中键盘鼠标的相关操作的详细内容,更多关于Python键盘鼠标操作的资料请关注脚本之家其它相关文章

您可能感兴趣的文章:
阅读全文