如何基于Tkinter实现输入文件夹路径后检索返回对应PDF文件列表
基于Tkinter的PDF文件检索GUI实现
需求说明
- 通过Entry组件输入目标文件夹路径
- 点击按钮后自动扫描文件夹,返回所有PDF文件列表
- 直接复用已有的PDF检索逻辑代码
完整可运行代码
import tkinter as tk from tkinter import ttk, messagebox from os import listdir from os.path import isfile, join def scan_pdf_files(): # 获取输入框中的路径 target_path = path_entry.get().strip() if not target_path: messagebox.showwarning("输入为空", "请先填写文件夹路径") return try: # 完全复用原有检索逻辑 pdf_list = [f for f in listdir(target_path) if isfile(join(target_path, f)) and '.pdf' in f] # 清空历史结果后输出新结果 result_box.delete(1.0, tk.END) result_box.insert(tk.END, "PDF 文件列表:\n\n") for pdf in pdf_list: result_box.insert(tk.END, f"{pdf}\n") except FileNotFoundError: messagebox.showerror("路径错误", "你输入的文件夹路径不存在,请检查后重试") except PermissionError: messagebox.showerror("权限不足", "没有权限访问该文件夹,请调整路径或权限设置") # 初始化主窗口 root = tk.Tk() root.title("PDF文件检索工具") root.geometry("600x450") # 路径输入模块 input_frame = ttk.Frame(root, padding=15) input_frame.pack(fill=tk.X) ttk.Label(input_frame, text="文件夹路径:").pack(side=tk.LEFT, padx=5) path_entry = ttk.Entry(input_frame, width=50) path_entry.pack(side=tk.LEFT, padx=5, fill=tk.X, expand=True) scan_btn = ttk.Button(input_frame, text="检索PDF", command=scan_pdf_files) scan_btn.pack(side=tk.LEFT, padx=5) # 结果展示模块 result_frame = ttk.Frame(root, padding=15) result_frame.pack(fill=tk.BOTH, expand=True) ttk.Label(result_frame, text="检索结果:").pack(anchor=tk.W, padx=5) result_box = tk.Text(result_frame, wrap=tk.WORD, font=("微软雅黑", 10)) result_box.pack(fill=tk.BOTH, expand=True, padx=5, pady=5) root.mainloop()
功能说明
- 核心检索逻辑和提供的原有代码完全一致,仅将控制台的输入输出替换为Tkinter组件交互
- 新增了常用异常处理,避免路径错误、权限不足等情况导致程序崩溃
- 直接运行代码,输入文件夹路径后点击「检索PDF」按钮即可看到对应文件夹下的所有PDF文件列表
内容的提问来源于stack exchange,提问作者Thanh Luong
相关产品推荐
相关产品推荐

