文章目录
- # os: 用于操作系统相关功能,如路径处理 import os # tkinter: 用于创建图形用户界面(GUI) import tkinter as tk “”” filedialog: 用于文件选择对话框 messagebox: 显示消息对话框 ttk: 提供进度条等小部件 “”” from tkinter import filedialog, messagebox, ttk # pptx.Presentation: 用于读取PPT文件 from pptx import Presentation # docx: 用于创建Word文档 import docx
- # 定义主应用类 PPTTextExtractorApp class PPTTextExtractorApp: def __init__(self, root): # 初始化方法设置窗口标题和大小(600×400像素) self.root = root self.root.title(“PPT 文本提取工具”) self.root.geometry(“600×400”)
- # 初始化变量,创建三个Tkinter变量用于存储 “”” ppt_path: 选择的PPT文件路径 save_path: 保存结果的路径 file_format: 输出格式(默认为txt) “”” self.ppt_path = tk.StringVar() self.save_path = tk.StringVar() self.file_format = tk.StringVar(value=”txt”)
- def create_widgets(self): # PPT 文件选择(包含标签、输入框和浏览按钮) tk.Label(self.root, text=”选择 PPT 文件:”).pack(pady=(10, 0), anchor=”w”, padx=10) ppt_frame = tk.Frame(self.root) ppt_frame.pack(fill=”x”, padx=10, pady=5) tk.Entry(ppt_frame, textvariable=self.ppt_path, width=50).pack(side=”left”, expand=True, fill=”x”) tk.Button(ppt_frame, text=”浏览…”, command=self.browse_ppt).pack(side=”right”, padx=5) # 保存路径选择 tk.Label(self.root, text=”保存路径:”).pack(pady=(10, 0), anchor=”w”, padx=10) save_frame = tk.Frame(self.root) save_frame.pack(fill=”x”, padx=10, pady=5) tk.Entry(save_frame, textvariable=self.save_path, width=50).pack(side=”left”, expand=True, fill=”x”) tk.Button(save_frame, text=”浏览…”, command=self.browse_save_path).pack(side=”right”, padx=5) # 文件格式选择(单选按钮组,选择 TXT 或 Word 格式) tk.Label(self.root, text=”保存格式:”).pack(pady=(10, 0), anchor=”w”, padx=10) format_frame = tk.Frame(self.root) format_frame.pack(fill=”x”, padx=10, pady=5) tk.Radiobutton(format_frame, text=”TXT 文件”, variable=self.file_format, value=”txt”).pack(side=”left”, padx=10) tk.Radiobutton(format_frame, text=”Word 文档”, variable=self.file_format, value=”docx”).pack(side=”left”, padx=10) # 提取按钮(绿色按钮,点击触发提取操作) tk.Button( self.root, text=”提取文本并保存”, command=self.extract_text, bg=”#4CAF50″, fg=”white”, height=2, font=(“Arial”, 10, “bold”) ).pack(pady=20, fill=”x”, padx=50) # 进度条 self.progress = ttk.Progressbar(self.root, orient=”horizontal”, length=400, mode=”determinate”) self.progress.pack(pady=10)
- def browse_ppt(self): filepath = filedialog.askopenfilename( title=”选择 PPT 文件”, # 限制为.pptx文件 filetypes=[(“PowerPoint 文件”, “*.pptx”), (“所有文件”, “*.*”)] ) if filepath: self.ppt_path.set(filepath) # 默认保存路径与 PPT 文件同目录 default_save_path = os.path.join(os.path.dirname(filepath), “提取的文本”) self.save_path.set(default_save_path) 以上就是基于Python和tkinter实现PPT文本提取工具的详细内容,更多关于Python tkinter实现PPT文本提取的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: Python制作一个PPT文本提取工具 使用Python快速提取PPT中的文本内容的代码示例 Python读取pdf、word、excel、ppt、csv和txt文件提取所有文本 Python实现提取或替换PPT中文本与图片的示例代码
目录
- 一:效果展示:
- 二:功能描述:
- 1. 核心功能:
- (1)PPT 文件选择
- (2)保存路径与格式设置
- (3)文本提取与进度显示
- (4)错误处理与反馈
- 2. 技术实现:
- (1)依赖库
- (2)代码结构
- 三:完整代码:
- 四:代码分析
- 1. 导入模块
- 2. 主应用类定义
- 3. 初始化变量
- 4. 创建UI界面
- 5. 浏览PPT文件
本项目是基于 tkinter 图形界面的 PPT 文本提取工具,主要功能是从 PPT文件中提取所有文本内容,并支持将提取的文本保存为 .txt 格式 或 Word 文档(.docx)


本项目是基于 tkinter 图形界面的 PPT 文本提取工具,主要功能是从 PPT文件中提取所有文本内容,并支持将提取的文本保存为 .txt 格式 或 Word 文档(.docx)


- 用户可以通过界面浏览并选择本地的PPT(
.pptx )文件
- 默认将保存路径设置为与 PPT 文件同目录下的
提取的文本 文件夹(自动创建)
.pptx )文件提取的文本 文件夹(自动创建)
用户可自定义保存路径(通过文件夹选择)
支持两种保存格式:
TXT 文件:纯文本格式,每段文本占一行
Word 文档:通过 python-docx 库生成 .docx 文件,保留段落结构
- 遍历 PPT 的每一页幻灯片,提取所有 PPT 中的文本框内容
- 实时更新进度条,显示当前处理的幻灯片进度
- 若 PPT 中无文本,提示用户 “ 未提取到任何文本 ”
- 捕获异常(如文件损坏、权限问题等),通过弹窗显示错误信息
- 成功提取后,弹出提示框显示保存路径
tkinter:构建图形界面(文件对话框、按钮、进度条等)
python-pptx:读取PPT(.pptx) 文件并提取文本
python-docx:生成 Word 文档(仅在保存为 .docx 时使用)
os:处理文件路径(如创建目录,拼接路径)
tkinter:构建图形界面(文件对话框、按钮、进度条等)python-pptx:读取PPT(.pptx) 文件并提取文本python-docx:生成 Word 文档(仅在保存为 .docx 时使用)os:处理文件路径(如创建目录,拼接路径)
PPTTextExtractorApp 类封装所有功能,通过 __init__ 初始化界面,create_widgets 创建控件
browse_ppt():选择 PPT 文件
browse_save_path():选择保存目录
extract_text():核心逻辑(提取文本→保存文件→更新进度)
PPTTextExtractorApp 类封装所有功能,通过 __init__ 初始化界面,create_widgets 创建控件browse_ppt():选择 PPT 文件browse_save_path():选择保存目录extract_text():核心逻辑(提取文本→保存文件→更新进度)
import os
import tkinter as tk
from tkinter import filedialog, messagebox, ttk
from pptx import Presentation
import docx
class PPTTextExtractorApp:
def __init__(self, root):
self.root = root
self.root.title("PPT 文本提取工具")
self.root.geometry("600x400")
# 初始化变量
self.ppt_path = tk.StringVar()
self.save_path = tk.StringVar()
self.file_format = tk.StringVar(value="txt") # 默认保存为 TXT
# 创建 UI
self.create_widgets()
def create_widgets(self):
# PPT 文件选择
tk.Label(self.root, text="选择 PPT 文件:").pack(pady=(10, 0), anchor="w", padx=10)
ppt_frame = tk.Frame(self.root)
ppt_frame.pack(fill="x", padx=10, pady=5)
tk.Entry(ppt_frame, textvariable=self.ppt_path, width=50).pack(side="left", expand=True, fill="x")
tk.Button(ppt_frame, text="浏览...", command=self.browse_ppt).pack(side="right", padx=5)
# 保存路径选择
tk.Label(self.root, text="保存路径:").pack(pady=(10, 0), anchor="w", padx=10)
save_frame = tk.Frame(self.root)
save_frame.pack(fill="x", padx=10, pady=5)
tk.Entry(save_frame, textvariable=self.save_path, width=50).pack(side="left", expand=True, fill="x")
tk.Button(save_frame, text="浏览...", command=self.browse_save_path).pack(side="right", padx=5)
# 文件格式选择
tk.Label(self.root, text="保存格式:").pack(pady=(10, 0), anchor="w", padx=10)
format_frame = tk.Frame(self.root)
format_frame.pack(fill="x", padx=10, pady=5)
tk.Radiobutton(format_frame, text="TXT 文件", variable=self.file_format, value="txt").pack(side="left", padx=10)
tk.Radiobutton(format_frame, text="Word 文档", variable=self.file_format, value="docx").pack(side="left", padx=10)
# 提取按钮
tk.Button(
self.root,
text="提取文本并保存",
command=self.extract_text,
bg="#4CAF50",
fg="white",
height=2,
font=("Arial", 10, "bold")
).pack(pady=20, fill="x", padx=50)
# 进度条
self.progress = ttk.Progressbar(self.root, orient="horizontal", length=400, mode="determinate")
self.progress.pack(pady=10)
def browse_ppt(self):
filepath = filedialog.askopenfilename(
title="选择 PPT 文件",
filetypes=[("PowerPoint 文件", "*.pptx"), ("所有文件", "*.*")]
)
if filepath:
self.ppt_path.set(filepath)
# 默认保存路径与 PPT 文件同目录
default_save_path = os.path.join(os.path.dirname(filepath), "提取的文本")
self.save_path.set(default_save_path)
def browse_save_path(self):
dirpath = filedialog.askdirectory(title="选择保存文件夹")
if dirpath:
self.save_path.set(dirpath)
def extract_text(self):
ppt_path = self.ppt_path.get()
save_path = self.save_path.get()
file_format = self.file_format.get()
if not ppt_path or not save_path:
messagebox.showwarning("警告", "请选择 PPT 文件和保存路径!")
return
try:
# 提取文本
prs = Presentation(ppt_path)
data = []
total_slides = len(prs.slides)
self.progress["maximum"] = total_slides
self.progress["value"] = 0
self.root.update()
for slide_idx, slide in enumerate(prs.slides, 1):
for shape in slide.shapes:
if shape.has_text_frame:
for paragraph in shape.text_frame.paragraphs:
data.append(paragraph.text)
self.progress["value"] = slide_idx
self.root.update()
if not data:
messagebox.showinfo("提示", "未提取到任何文本!")
return
# 确保保存路径存在
os.makedirs(save_path, exist_ok=True)
# 生成文件名
ppt_name = os.path.splitext(os.path.basename(ppt_path))[0]
output_filename = f"{ppt_name}_提取的文本.{file_format}"
output_path = os.path.join(save_path, output_filename)
# 保存文件
if file_format == "txt":
with open(output_path, "w", encoding="utf-8") as f:
f.write("n".join(data))
elif file_format == "docx":
doc = docx.Document()
for text in data:
doc.add_paragraph(text)
doc.save(output_path)
messagebox.showinfo("成功", f"文本已成功提取并保存至:n{output_path}")
self.progress["value"] = 0
except Exception as e:
messagebox.showerror("错误", f"发生错误:n{str(e)}")
self.progress["value"] = 0
if __name__ == "__main__":
root = tk.Tk()
app = PPTTextExtractorApp(root)
root.mainloop()
# os: 用于操作系统相关功能,如路径处理
import os
# tkinter: 用于创建图形用户界面(GUI)
import tkinter as tk
"""
filedialog: 用于文件选择对话框
messagebox: 显示消息对话框
ttk: 提供进度条等小部件
"""
from tkinter import filedialog, messagebox, ttk
# pptx.Presentation: 用于读取PPT文件
from pptx import Presentation
# docx: 用于创建Word文档
import docx
# 定义主应用类 PPTTextExtractorApp
class PPTTextExtractorApp:
def __init__(self, root):
# 初始化方法设置窗口标题和大小(600x400像素)
self.root = root
self.root.title("PPT 文本提取工具")
self.root.geometry("600x400")
# 初始化变量,创建三个Tkinter变量用于存储
"""
ppt_path: 选择的PPT文件路径
save_path: 保存结果的路径
file_format: 输出格式(默认为txt)
"""
self.ppt_path = tk.StringVar()
self.save_path = tk.StringVar()
self.file_format = tk.StringVar(value="txt")
def create_widgets(self):
# PPT 文件选择(包含标签、输入框和浏览按钮)
tk.Label(self.root, text="选择 PPT 文件:").pack(pady=(10, 0), anchor="w", padx=10)
ppt_frame = tk.Frame(self.root)
ppt_frame.pack(fill="x", padx=10, pady=5)
tk.Entry(ppt_frame, textvariable=self.ppt_path, width=50).pack(side="left", expand=True, fill="x")
tk.Button(ppt_frame, text="浏览...", command=self.browse_ppt).pack(side="right", padx=5)
# 保存路径选择
tk.Label(self.root, text="保存路径:").pack(pady=(10, 0), anchor="w", padx=10)
save_frame = tk.Frame(self.root)
save_frame.pack(fill="x", padx=10, pady=5)
tk.Entry(save_frame, textvariable=self.save_path, width=50).pack(side="left", expand=True, fill="x")
tk.Button(save_frame, text="浏览...", command=self.browse_save_path).pack(side="right", padx=5)
# 文件格式选择(单选按钮组,选择 TXT 或 Word 格式)
tk.Label(self.root, text="保存格式:").pack(pady=(10, 0), anchor="w", padx=10)
format_frame = tk.Frame(self.root)
format_frame.pack(fill="x", padx=10, pady=5)
tk.Radiobutton(format_frame, text="TXT 文件", variable=self.file_format, value="txt").pack(side="left", padx=10)
tk.Radiobutton(format_frame, text="Word 文档", variable=self.file_format, value="docx").pack(side="left", padx=10)
# 提取按钮(绿色按钮,点击触发提取操作)
tk.Button(
self.root,
text="提取文本并保存",
command=self.extract_text,
bg="#4CAF50",
fg="white",
height=2,
font=("Arial", 10, "bold")
).pack(pady=20, fill="x", padx=50)
# 进度条
self.progress = ttk.Progressbar(self.root, orient="horizontal", length=400, mode="determinate")
self.progress.pack(pady=10)
def browse_ppt(self):
filepath = filedialog.askopenfilename(
title="选择 PPT 文件",
# 限制为.pptx文件
filetypes=[("PowerPoint 文件", "*.pptx"), ("所有文件", "*.*")]
)
if filepath:
self.ppt_path.set(filepath)
# 默认保存路径与 PPT 文件同目录
default_save_path = os.path.join(os.path.dirname(filepath), "提取的文本")
self.save_path.set(default_save_path)
以上就是基于Python和tkinter实现PPT文本提取工具的详细内容,更多关于Python tkinter实现PPT文本提取的资料请关注风君子博客其它相关文章!
您可能感兴趣的文章:
- Python制作一个PPT文本提取工具
- 使用Python快速提取PPT中的文本内容的代码示例
- Python读取pdf、word、excel、ppt、csv和txt文件提取所有文本
- Python实现提取或替换PPT中文本与图片的示例代码