鱼C论坛

 找回密码
 立即注册
查看: 1316|回复: 0

[作品展示] python懒人听书

[复制链接]
发表于 2021-8-12 01:33:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

程序的编程思路如下:

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

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

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

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

下面开始编程:

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

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

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

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

  1. import tkinter as tk   # 用于创建图形界面程序的库
复制代码


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

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


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

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

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

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


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

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


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

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

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

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


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

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


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

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

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


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

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

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

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

  1. import tkinter.filedialog as tkf  # 用于选择文件并获取文件的路径
复制代码


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

  1. 4,创建功能函数并关联按钮
  2. # 创建一个选择并打开书籍的函数
  3. def select_file():
  4.     global book_text
  5.     book_text = ''
  6.     path = tkf.askopenfilename()  # 获取文件路径
  7.     with open(path, 'r', encoding='utf-8') as file:  # 打开电子书
  8.         book_text = file.read()  # 读取电子书里的文字
  9.     text.insert('end', book_text)  # 把读取出来的文字显示到文本框中
复制代码


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

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


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

  1. import pyttsx3  # 可以把文字转换为声音的库
复制代码


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

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


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

  1. button2 = tk.Button(window, text='开始听书',command=broadcast_text)
复制代码


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

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


  4. # 4,创建功能函数并关联按钮
  5. # 创建一个选择并打开书籍的函数
  6. def select_file():
  7.     global book_text
  8.     book_text = ''
  9.     path = tkf.askopenfilename()  # 获取文件路径
  10.     with open(path, 'r', encoding='utf-8') as file:  # 打开电子书
  11.         book_text = file.read()  # 读取电子书里的文字
  12.     text.insert('end', book_text)  # 把读取出来的文字显示到文本框中

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


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

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

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

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

  30. window.mainloop()
复制代码


 

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

​
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-20 08:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表