孤妓与酒 发表于 2021-8-12 01:33:26

python懒人听书


项目名称:懒人听书(基础版)
开发工具:pycharm
项目简介:打开文件选取文本(TXT小说),点击阅读
 

开始编程之前,首先需要明确思路,有了清晰的思路,编程就会相对的比较简单。

程序的编程思路如下:

1,首先需要一个整体的简易框架,创建一个整体的界面

2,为了使界面美观,要修改窗口的大小和位置,设置界面窗口的信息

3,框架完成之后,选择文件和阅读,需要相应的按钮,因而需要在窗口添加相应的控件

4,单纯的有按钮是不行的,还需要将按钮所需要具有的能力赋给按钮,因此需要创建功能函数并关联按钮

下面开始编程:

1,创建一个图形界面   程序窗口

稍微会用pycharm的都知道,程序运行一般都是在一个小黑框运行,但是我们一般开发的话都是在图形界面进行的,可以想象一下,你登录QQ的场景,双击QQ图标,跳出来的登录界面就是图形界面的一种。

使用图形界面的话,首先要在程序中引入python的一个tkinter库,这个库的作用就是用来创建图形界面的。

具体的引用为(名字有点长,所以将其定义为tk):

import tkinter as tk   # 用于创建图形界面程序的库

 首先使用tk(tkinter,下文均简称为tk)中对应的Tk方法,这个方法是专门用来创建图形界面窗口的,定义好之后,我们给他起个名字叫window。

# 1,创建一个图形界面窗口   程序窗口
window = tk.Tk()      # 创建窗口

在这之后,我们添加“window.mainloop”代码,运行程序来显示结果(建议每一步都做完之后看看结果是否有改变,都有什么样的改变)。可以发现有了一个空白的窗口框,图形窗口就创建好了。

2,设置图形界面窗口的信息

第一步创建好之后,我们会发现,图形界面的名字就叫做tk,相较有点难看,我们首先给它个名字。创建标题有个简单的方法叫title,可以直接使用。

# 2,设置图形界面窗口的信息
window.title('懒人听书')    # 设置窗口名字

名字修改好之后,我们会发现,图形界面的大小不怎么好看,我们为了追求更好看一点,对他的大小进行一定的调整。实现自定义的窗口的大小和位置我们一般用geometry方法进行修改(这里面有个注意点,我一开始也搞错了)。

window.geometry('640x480')   # 设置窗口的大小 geometry中乘号用小写的x表示

 3,创建相应的控件    文本框和按钮

第二步完成之后显示结果,发现只是一个空白的框,什么都没有,而我们需要导入文件和点击阅读,所以需要添加相应的按钮,有的时候可能还想边看边听,这个时候就需要向图形界面添加合适的文本框。

文本框的创建需要调用tk的一个Text方法创建,创建完毕之后,我们将它定义为text。

# 3,在窗口添加相应的控件
text = tk.Text(window)   # 创建文本框

创建之后运行,我们会发现,创建前后没有任何的区别,这是因为我们没有给这个文本框设置一个放置我的位置。 调用一个place的方法给文本框选择位置(x,y为对应的位置变量,width和height表示的是文本框的长宽,这个自行调整,自己满意就好)。

text.place(x=10, y=10, width=620, height=400)    # 设置文本框在窗口程序上的位置和大小

这样,文本框就创建好了。

按钮的创建方法需要调用tk的一个Button方法,说明创建的位置和按钮名称,具体如下:

button1 = tk.Button(window, text='选择书籍')   # 设置按钮
button2 = tk.Button(window, text='开始听书')

 就这样,文本框和按钮设置好了。

4,创建功能函数并关联按钮   两个按钮函数

第三步运行之后,我们发现,虽然按钮给它设置好了,但是点击它却没有任何的反应,这是因为我们还没有给它进行功能的赋予,就像送礼物只有个礼物盒一样毫无意义,因此我们需要创建两个功能函数,让按钮的存在变得有意义。

首先,我们先创建一个选择并打开书籍的函数,第一步,我们先定义一个一看就懂的函数名select_file(选择文件),这个函数的功能是把我们选择的小说读取并显示到文本框。对文件进行选择,我们首先要引进一个叫filedialog的库来进行操作。

import tkinter.filedialog as tkf# 用于选择文件并获取文件的路径

 引用完毕之后,我们调用这个库,使用askopenfilename获取小说文件的路径,然后对其进行读取,并显示在文本框里。这样,选择文件的功能就创建完成了。

4,创建功能函数并关联按钮
# 创建一个选择并打开书籍的函数
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)# 把读取出来的文字显示到文本框中

创建完成之后,我们运行,发现点击按钮还是无法选择,这是因为我们没有把功能和按钮进行结合,因此我们需要对第三步进行添加,添加完成之后就是这样子。

button1 = tk.Button(window, text='选择书籍', command=select_file)   # 设置按钮,并关联功能

 之后,我们再创建一个可以用来阅读的函数,创建之前,我们也需要进行库的引进,这个库可以对文字进行阅读。

import pyttsx3# 可以把文字转换为声音的库

 库引进完成之后,我们就简单的调用这个库,对我们的文件进行阅读。这样,阅读的功能也创建好了。

# 创建一个可以阅读的函数
def broadcast_text():
    book = pyttsx3.init()   # 创建并初始化一个可以说话的对象
    book.say(book_text)   # 设置说话的内容
    book.runAndWait()       # 开始说话

 之后如图之前一样,对按钮进行功能的赋予,整个过程项目就完成了。

button2 = tk.Button(window, text='开始听书',command=broadcast_text)

 项目运行之后,我们就能得到一个可以听书的程序了。

 项目的完整代码如下:
import pyttsx3# 可以把文字转换为声音的库
import tkinter as tk   # 用于创建图形界面程序的库
import tkinter.filedialog as tkf# 用于选择文件并获取文件的路径


# 4,创建功能函数并关联按钮
# 创建一个选择并打开书籍的函数
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 broadcast_text():
    book = pyttsx3.init()   # 创建并初始化一个可以说话的对象
    book.say(book_text)   # 设置说话的内容
    book.runAndWait()       # 开始说话


# 1,创建一个图形界面窗口   程序窗口
window = tk.Tk()      # 创建窗口

# 2,设置图形界面窗口的信息
window.title('懒人听书')    # 设置窗口名字
window.geometry('640x480')   # 设置窗口的大小 geometry中乘号用小写的x表示

# 3,在窗口添加相应的控件
text = tk.Text(window)   # 创建文本框
text.place(x=10, y=10, width=620, height=400)    # 设置文本框在窗口程序上的位置和大小

button1 = tk.Button(window, text='选择书籍', command=select_file)   # 设置按钮,并关联功能
button1.place(x=100, y=420, width=100, height=50)    # 设置文本框在窗口程序上的位置和大小
button2 = tk.Button(window, text='开始听书',command=broadcast_text)
button2.place(x=400, y=420, width=100, height=50)

window.mainloop()

 

第一次发,有说的不清楚的可以和我留言,或者有大佬可以给我一些指点的,万分感谢。

页: [1]
查看完整版本: python懒人听书