首先解释一下pyttsx3是Python中的文本到语音转换库,而pynput是一个基于python的,能够监听和控制鼠标和键盘的第三方库。pynput主要包括两个类,pynput.mouse和pynput.keyboard,顾名思义,前者可以用来控制和监听鼠标(或者触控板),后者可以用来控制和监听键盘。
下面就让我们使用Python代码实现自动发送QQ消息吧!
1.安装所需的模块
由于pyttsx3与pynput模块均没有随python打包,因此我们需要自己下载!我们打开PyCharm终端输入以下命令安装即可!!
pip install pyttsx3
pip install pynput
2.pynput控制鼠标
为了使用Python控制和模拟鼠标点击与释放,我们首先必须要导入鼠标控制模块Controller,由于我们还需要模拟鼠标点击与移动模块Button,因此我们将其一起导入。
from pynput.mouse import Button, Controller
首先,我们将使用Controller()方法定义鼠标控制器。
mouse = Controller()
现在,如果你可以将鼠标移动到任何位置,只需要以元祖的形式提供x,y坐标即可。
mouse.position = (474,639)
如果你想查看当前鼠标移动的位置,直接打印即可
print('Current mouse position −> {0}'.format(mouse.position))
如果你想实现模拟鼠标左键按下和鼠标左键释放,如下所示
mouse.press(Button.left)
mouse.release(Button.left)
对于鼠标双击,
mouse.press(Button.left,2)
你甚至都可以直接模拟鼠标滚轮滑动
mouse.scroll(0,2)
3.pynput控制键盘
首先,我们同样是要导入对应所需要的模块,
from pynput.keyboard import Key, Controller
同理pynput控制鼠标类似,首先也要实例化键盘控制器,这里需要主要,如果你需要同时模拟操作键盘与鼠标,那么需要分别给两个控制器起一个别名以示区分不同的控制器。
key = Controller()
现在,为了模拟敲击键盘,我们有press方法与release方法,
key.press('a')
key.release('a')
这里适用于键盘上的所有字母(区分大小写),包括特殊字符等。
如果要模拟点击其他按键,例如shift,alt,ctrl,space,enter等,
key.press(Key.space) #敲击键盘
key.release(Key.space)
key.press(Key.alt)
key.release(Key.alt)
key.press(key.ctrl)
key.release(key.ctrl)
当然,你可能会想,如果要一个一个字符的敲击释放,这里势必会导致代码冗余且不易读,因此,pynput提供了type功能,可以实现一次性输入句子或单词,如下
key.type('Hello!')
4.将文字转换为语音
这里首先是将Pyttsx模块导入,然后使用init方法初始化,紧接着调用say方法可以操作麦克风说出对应的内容,而最后的runAndWait函数的作用就是运行时间循环
import pyttsx3 as pyttsx
engine = pyttsx.init()#初始化
engine.say('Hello')
engine.runAndWait()
其实,关于这个模块还能设置音量大小,语气速率,以及引用其他声音等功能,感兴趣的小伙伴可以执行尝试!
5.模拟给qq好友发送多条消息
使用下述的代码需要注意,首先需要将鼠标移动到对应好友的消息输入框中,如下所示:
#pynput pip install pynput
from pynput.mouse import Button, Controller as mouse_cl
from pynput.keyboard import Key, Controller as key_col
import pyttsx3 as pyttsx
import time
def send(string):
engine = pyttsx.init()
engine.say('请在5秒内建鼠标移动到聊天框')
engine.runAndWait()
time.sleep(5)
# 定位信息输入框
mouse = mouse_cl() # 获取鼠标控制器
print(mouse.position)
# 获取当前输入框的光标
mouse.press(Button.left)
mouse.release(Button.left)
# 通过循环的方式 99+信息
for i in range(10):
# 设置需要输入的内容
key = key_col() #创建键盘控制器
key.type(string)
key.press(Key.enter)#按下Enter键
key.release(Key.enter)# 释放Enter键
if __name__ == '__main__':
send('Hello Python')