把WORD拖放到tkinter的窗口,就可以朗读整改word文件的内容。
代码:
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 10 17:09:35 2024@author: YBK
"""
import pyttsx3
import comtypes.client
import os
import tkinter as tk
import windnd
from tkinter.messagebox import showinfodef get_file_extension(file_path):return os.path.splitext(file_path)[-1]def read_doc_file(file_path):# 创建一个Word应用程序对象word = comtypes.client.CreateObject('Word.Application')word.Visible = 0 # 不显示Word界面# 打开Word文档doc = word.Documents.Open(file_path)# 读取文档内容for paragraph in doc.Paragraphs:# 声明文本text = paragraph.Range.Text# 执行朗读engine.say(text)engine.runAndWait()# 关闭文档并退出Word应用程序doc.Close()word.Quit()def dragged_files(files):fileurl = ''if len(files) > 1:# 这里想使用os.path.splitext(fileurl)[1] == '.doc' 但发现wps也能朗读showinfo("提示","请拖放一个WORD文件!")else:print(files[0].decode('gbk'))fileurl = files[0].decode('gbk')read_doc_file(fileurl)if __name__ == '__main__':# 初始化tts引擎engine = pyttsx3.init() # 设置声音对象voices = engine.getProperty('voices')engine.setProperty('voice', voices[0].id) # 可以通过修改索引来更换声音 # 设置语速rate = engine.getProperty('rate')engine.setProperty('rate', 220) # 设置音量volume = engine.getProperty('volume')engine.setProperty('volume', volume)rootWindow = tk.Tk()rootWindow.title("拖放WORD文件朗读全文")rootWindow.geometry("300x120")windnd.hook_dropfiles(rootWindow , func=dragged_files)rootWindow.mainloop()
要注意word文件没有被打开。