上一篇文章
上一篇文章:https://blog.csdn.net/pythonlaoyu/article/details/13360493
3. 编写函数
3.1 编写框架
这个函数名称叫“Play”(即“播放”)。框架是:
def play():
pass # 什么都不做。因为是框架,所以只能这样
那个pass
后面要改。现在的代码没有用,没人调用它,它也什么都不做
3.1.1 现在的代码
# 导入模块
import tkinter as tk
from tkinter import ttk
# 创建窗口
win = tk.Tk() # 创建窗口对象win
win.title('文本转语音') # 设置标题
win.geometry('300x200') # 设置默认大小为300×200
win.resizable(False, False) # 设置宽和高不可改变
win.config(background='white') # 设置窗口颜色为白色(white)
# 创建提示信息
ttk.Label(win, text='输入文本', background='white').pack() # 创建标签对象,并且背景色设为白色(white)、文本为“输入文本”
# 创建输入框
text = ttk.Entry(win, background='white') # 创建输入框对象,并且背景色设为白色(white)
text.pack() # 显示组件
# 创建按钮
button = ttk.Button(win, text='播放') # 创建按钮对象,文本为“播放”,但无法设置背景颜色。点击之后执行的命令后面再讲
button.pack() # 显示组件
def play():
pass
tk.mainloop() # 消息循环
3.1.2 代码结果
没什么变化,后面会改造
3.2 获得文本
怎么获得文本?这里用text.get()
的方法获得:
(注意!把pass
去掉!)
def play():
text.get() # 获得文本
这个文本现在没用,但是后面有用
3.2.1 现在的代码
# 导入模块
import tkinter as tk
from tkinter import ttk
# 创建窗口
win = tk.Tk() # 创建窗口对象win
win.title('文本转语音') # 设置标题
win.geometry('300x200') # 设置默认大小为300×200
win.resizable(False, False) # 设置宽和高不可改变
win.config(background='white') # 设置窗口颜色为白色(white)
# 创建提示信息
ttk.Label(win, text='输入文本', background='white').pack() # 创建标签对象,并且背景色设为白色(white)、文本为“输入文本”
# 创建输入框
text = ttk.Entry(win, background='white') # 创建输入框对象,并且背景色设为白色(white)
text.pack() # 显示组件
# 创建按钮
button = ttk.Button(win, text='播放') # 创建按钮对象,文本为“播放”,但无法设置背景颜色。点击之后执行的命令后面再讲
button.pack() # 显示组件
def play():
text.get()
tk.mainloop() # 消息循环
3.2.1 代码结果
还是没有什么变化,最后面有视频(过几天放)!
3.3 播放语音(即转语音)
先插入几行代码:
在第3行插入这一句代码:import pyttsx3
(确保你前面安装了pyttsx3),并换行
在第5行插入以下代码:p3 = pyttsx3.init() # 初始化语音
然后把函数改成:
def play():
p3.say(text.get()) # 获得文本并准备播放
# 开始播放,播放完成之后停止播放
p3.runAndWait()
p3.stop()
很快就完成了!
3.3.1 现在的代码
# 导入模块
import pyttsx3
import tkinter as tk
from tkinter import ttk
p3 = pyttsx3.init()
# 创建窗口
win = tk.Tk() # 创建窗口对象win
win.title('文本转语音') # 设置标题
win.geometry('300x200') # 设置默认大小为300×200
win.resizable(False, False) # 设置宽和高不可改变
win.config(background='white') # 设置窗口颜色为白色(white)
# 创建提示信息
ttk.Label(win, text='输入文本', background='white').pack() # 创建标签对象,并且背景色设为白色(white)、文本为“输入文本”
# 创建输入框
text = ttk.Entry(win, background='white') # 创建输入框对象,并且背景色设为白色(white)
text.pack() # 显示组件
# 创建按钮
button = ttk.Button(win, text='播放') # 创建按钮对象,文本为“播放”,但无法设置背景颜色。点击之后执行的命令后面再讲
button.pack() # 显示组件
def play():
p3.say(text.get()) # 获得文本并准备播放
# 开始播放,播放完成之后停止播放
p3.runAndWait()
p3.stop()
tk.mainloop() # 消息循环
3.3.2 代码结果
照样没有变化,只有代码有变化……
3.4 绑定函数,使点击按钮时播放语音
上次的按钮还没写command参数,所以点击之后没有效果,现在我们给按钮对象加一个参数:command,写上:
, command=lambda: play()
现在,你运行程序,输入随便一段文本,点击按钮。看看,是不是成功了?
3.4.1 现在的代码
# 导入模块
import pyttsx3
import tkinter as tk
from tkinter import ttk
p3 = pyttsx3.init()
# 创建窗口
win = tk.Tk() # 创建窗口对象win
win.title('文本转语音') # 设置标题
win.geometry('300x200') # 设置默认大小为300×200
win.resizable(False, False) # 设置宽和高不可改变
win.config(background='white') # 设置窗口颜色为白色(white)
# 创建提示信息
ttk.Label(win, text='输入文本', background='white').pack() # 创建标签对象,并且背景色设为白色(white)、文本为“输入文本”
# 创建输入框
text = ttk.Entry(win, background='white') # 创建输入框对象,并且背景色设为白色(white)
text.pack() # 显示组件
# 创建按钮
button = ttk.Button(win, text='播放', command= lambda: play()) # 创建按钮对象,文本为“播放”,但无法设置背景颜色。点击之后执行的命令是执行play函数
button.pack() # 显示组件
def play():
p3.say(text.get()) # 获得文本并准备播放
# 开始播放,播放完成之后停止播放
p3.runAndWait()
p3.stop()
tk.mainloop() # 消息循环
3.4.2 代码结果
这个我过几天再录视频(小学生嘛,时间不是那么充足)
4. 完成!
恭喜你!制作了一个文本转语音工具!
你运行试试,输入文本(如果想不到,可以用下面的),点击按钮,听😁!
5. 附录
5.1 文本
5.1.1 中文
你好!世界!世界会被我们改变!
5.1.2 英文
Hello! World! We will change the world!
5.2 资源
文章顶部有