前提条件
相关介绍
- Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
- Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
- Pyttsx3是 Python 中的文本到语音转换库。
Tkinter 组件
Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。
目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:
控件 | 描述 |
---|---|
Button | 按钮控件;在程序中显示按钮。 |
Canvas | 画布控件;显示图形元素如线条或文本 |
Checkbutton | 多选框控件;用于在程序中提供多项选择框 |
Entry | 输入控件;用于显示简单的文本内容 |
Frame | 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 |
Label | 标签控件;可以显示文本和位图 |
Listbox | 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户 |
Menubutton | 菜单按钮控件,用于显示菜单项。 |
Menu | 菜单控件;显示菜单栏,下拉菜单和弹出菜单 |
Message | 消息控件;用来显示多行文本,与label比较类似 |
Radiobutton | 单选按钮控件;显示一个单选的按钮状态 |
Scale | 范围控件;显示一个数值刻度,为输出限定范围的数字区间 |
Scrollbar | 滚动条控件,当内容超过可视化区域时使用,如列表框。. |
Text | 文本控件;用于显示多行文本 |
Toplevel | 容器控件;用来提供一个单独的对话框,和Frame比较类似 |
Spinbox | 输入控件;与Entry类似,但是可以指定输入范围值 |
PanedWindow | PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。 |
LabelFrame | labelframe 是一个简单的容器控件。常用与复杂的窗口布局。 |
tkMessageBox | 用于显示你应用程序的消息框。 |
实验环境
- Python 3.x (面向对象的高级语言)
- Tkinter(Python标准库)
- Pyttsx3(Python第三方库)
pip3 install pyttsx3
听书神器
实现步骤
- 图形界面(窗口标题、大小等)
- 设置相应的Tkinter控件(文本框等)
- 实现每个控件的功能(选择书籍,开始听书等)
- 把文字转化为语音
代码实现
import threading # 线程库
import tkinter as tk # Python自带GUI库
import tkinter.filedialog as tkf
import pyttsx3 # 一个可以把文字转化为语音的库
# 选择电子书
def select_file():
global book_text
book_text = ''
path = tkf.askopenfilename()
with open(path,'r',encoding='utf-8') as file:
book_text=file.read()
text.insert('end',book_text)
# 创建线程
def creat_thread():
th = threading.Thread(target=listen_book)
th.setDaemon(True) # 守护线程
th.start()
# 开始听书
def listen_book():
book = pyttsx3.init()
book.say(book_text)
book.runAndWait()
# 创建并设置图形界面
window = tk.Tk() # 窗口对象
window.title('听书神器') # 窗口标题
window.geometry('640x480') # 窗口大小
# 增加控件
text = tk.Text(window) # 文本框
text.place(x=20,y=20,width=600,height=400) # 文本框的属性配置
# '选择书籍'按键
open_button = tk.Button(window,text='选择书籍',command=select_file)
open_button.place(x=100,y=430,width=150,height=30)
# '开始听书'按键
listen_button = tk.Button(window,text='开始听书',command=creat_thread)
listen_button.place(x=350,y=430,width=150,height=30)
window.mainloop() # 进入消息循环
输出结果
Python Tkinter实现一个听书神器
更多精彩内容,可点击进入Python日常小操作专栏查看