|
发表于 2024-10-7 13:24:13
|
显示全部楼层
我们可以对程序进行一些改进,来满足您的需求:
1. 在选择了存放文件夹后,可以使用 `Label` 来更新界面的状态,显示“正在处理中”或“已完成”。
2. 修改 Excel 文件中的超链接列,让其具有可以点击打开 PDF 的功能。
以下是一个基本思路:
- import os
- import shutil
- import tkinter as tk
- from tkinter import filedialog, messagebox
- import pandas as pd
- # 初始化全局变量
- selected_folders = []
- def select_folder():
- folder = filedialog.askdirectory()
- if folder:
- selected_folders.append(folder)
- listbox.insert(tk.END, folder)
- def select_destination():
- destination_folder = filedialog.askdirectory()
- if not destination_folder:
- return
-
- # 界面更新为“正在处理中”
- status_label.config(text="正在处理中...")
- root.update()
- pdf_folder = os.path.join(destination_folder, "PDF")
- os.makedirs(pdf_folder, exist_ok=True)
- pdf_files = set()
-
- for folder in selected_folders:
- for root_dir, dirs, files in os.walk(folder):
- for file in files:
- if file.endswith('.pdf'):
- pdf_files.add(file)
- pdf_files_copied = []
- for file in pdf_files:
- for folder in selected_folders:
- file_path = os.path.join(folder, file)
- if os.path.exists(file_path):
- shutil.copy(file_path, pdf_folder)
- pdf_files_copied.append(file)
- break
- data = {
- "名称": [os.path.splitext(file)[0] for file in pdf_files_copied],
- "超链接": [f'=HYPERLINK("{os.path.join(pdf_folder, file)}", "{file}")' for file in pdf_files_copied]
- }
- df = pd.DataFrame(data)
- excel_path = os.path.join(destination_folder, "PDF汇总.xlsx")
- df.to_excel(excel_path, index=False)
- # 界面更新为“已完成”
- status_label.config(text="已完成")
- root.update()
- root.after(10000, root.quit) # 10秒后关闭窗口
- def stop():
- root.quit()
- root = tk.Tk()
- root.title("PDF 汇总工具")
- select_button = tk.Button(root, text="选择文件夹", command=select_folder)
- select_button.pack()
- listbox = tk.Listbox(root)
- listbox.pack(fill=tk.BOTH, expand=True)
- destination_button = tk.Button(root, text="选择存放文件夹", command=select_destination)
- destination_button.pack()
- status_label = tk.Label(root, text="")
- status_label.pack()
- stop_button = tk.Button(root, text="停止", command=stop)
- stop_button.pack()
- root.mainloop()
复制代码
### 改进说明
1. **界面状态更新**:在合并 PDF 过程中更改标签文本为“正在处理中”,完成后更改为“已完成”。
2. **Excel 超链接**:通过在 DataFrame 中的超链接列中添加 `=HYPERLINK("<路径>", "<显示文本>")` 公式来实现实际可点击的超链接。
这些改进使交互更加直观和功能更完善。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|