目录
一、exe
二、使用方法
三、代码
四、Python打包exe
一、exe
百度网盘:
链接:https://pan.baidu.com/s/1dyCo_iVv7fb369BHbwGjHg
提取码:2333
夸克网盘:
链接:https://pan.quark.cn/s/36b14a53cccd
二、使用方法
1. 下载完成后双击文件。
2. 先选择保存路径,然后在空白区域输入文件名称,注意用顿号、分割文件名称,最后点击创建,弹出创建完成的窗口后即可在对应目录找到文档。
三、代码
import os
from docx import Document
import tkinter as tk
from tkinter import filedialog, messagebox, Label, Button, Text, Scrollbar, Frame
class DocxCreatorApp(tk.Tk):
def __init__(self):
super().__init__()
self.title("Word 文档创建器")
self.geometry("400x300")
self.init_ui()
def init_ui(self):
# 目录选择按钮
self.btn_select_folder = Button(self, text="选择保存目录", command=self.select_folder)
self.btn_select_folder.pack(pady=10)
# 显示选择的目录
self.label_folder_path = Label(self, text="未选择目录")
self.label_folder_path.pack()
# 文件名输入提示
self.label_input = Label(self, text="输入文件名(用顿号 、分隔多个文件, 注意不要带有\/:*?<>|以上字符)")
self.label_input.pack()
# 文件名输入区域 + 滚动条
self.text_frame = Frame(self)
self.text_frame.pack()
self.text_file_names = Text(self.text_frame, height=10, width=50)
self.scrollbar = Scrollbar(self.text_frame, command=self.text_file_names.yview)
self.text_file_names.configure(yscrollcommand=self.scrollbar.set)
self.text_file_names.pack(side=tk.LEFT, expand=True)
self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
# 创建文件按钮
self.btn_create_files = Button(self, text="创建文件", command=self.create_files)
self.btn_create_files.pack(pady=20)
self.docx_path = ""
def select_folder(self):
folder_selected = filedialog.askdirectory()
if folder_selected:
self.docx_path = folder_selected
self.label_folder_path.config(text=self.docx_path)
def create_files(self):
if not self.docx_path:
messagebox.showerror("错误", "请先选择一个保存目录")
return
file_names_raw = self.text_file_names.get("1.0", tk.END).split('、')
# 过滤并清理文件名
file_names = [name.strip().replace('/', '_').replace('\\', '_').replace(':', '_').replace('*', '_').replace('?', '_').replace('<', '_').replace('>', '_').replace('|', '_') for name in file_names_raw if name.strip()]
if not file_names:
messagebox.showerror("错误", "请输入至少一个文件名")
return
for name in file_names:
# 确保文件名非空且没有使用违规字符
if name:
doc = Document()
filename = os.path.join(self.docx_path, name + ".docx")
try:
doc.save(filename)
except Exception as e:
messagebox.showerror("错误", f"文件 '{name}' 创建失败: {e}")
continue # 处理下一个文件名
messagebox.showinfo("完成", "所有文档已成功创建!")
if __name__ == "__main__":
app = DocxCreatorApp()
app.mainloop()
1.command=self.select_folder
将一个函数 self.select_folder 分配给按钮 self.btn_select_folder。当用户点击这个按钮时,就会调用 self.select_folder 函数。 self.select_folder 函数使用 filedialog.askdirectory() 来打开一个文件夹选择对话框,让用户选择一个目录,并将选定的目录路径存储在 self.docx_path 变量中。
2. self.btn_select_folder.pack(pady=10)
self.btn_select_folder.pack(pady=10) 是一个 Tkinter 中的方法调用,用于将按钮 self.btn_select_folder 放置在GUI界面上,并指定垂直方向上的外边距为 10 px。
3. self.text_frame = Frame(self) ;self.text_frame.pack()
self.text_frame = Frame(self)创建一个名为 text_frame 的 Frame 组件容器,相当于html中的盒子,self.text_frame.pack()将其放置在应用程序中(或者说是GUI界面)。
4. 文本区域+滚动条
self.text_file_names = Text(self.text_frame, height=10, width=50)创建了一个文本框, self.text_file_names,self.text_frame 是文本框所在的父容器(通常是一个 Frame)(文本框和滚动条设置为同一个父容器放在一起),height=10 指定了文本框的高度为 10 行,width=50 则指定了文本框的宽度为 50 个字符。
self.scrollbar = Scrollbar(self.text_frame, command=self.text_file_names.yview)创建一个滚动条, self.text_frame 是滚动条所在的父容器(文本框和滚动条设置为同一个父容器放在一起),command=self.text_file_names.yview 表示滚动条与文本框的纵向滚动事件关联起来。当用户拖动滚动条时,会触发 self.text_file_names.yview 方法,从而使文本框内容相应地进行垂直滚动。
self.text_file_names.configure(yscrollcommand=self.scrollbar.set)将滚动条与文本框进行关联,yscrollcommand 为 self.scrollbar.set,表示滚动条的位置变化将通过调用 self.scrollbar.set 方法来通知文本框进行滚动。
self.text_file_names.pack(side=tk.LEFT, expand=True),文本框 self.text_file_names 将其放置在应用程序(或者说是GUI界面)中。side=tk.LEFT 指定了文本框放置在父容器的左侧,这意味着它会沿着父容器的左边缘排列。expand=True 表示允许文本框在水平方向上扩展以填充剩余空间。如果父容器的大小发生变化,文本框将根据需要水平扩展以填满可用空间。
self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)。side=tk.RIGHT 指定了滚动条放置在父容器的右侧,因此它会沿着父容器的右边缘排列。fill=tk.Y 表示滚动条在垂直方向上填充整个可用空间。这使得滚动条在垂直方向上占据父容器中所有可用的高度空间,以便用户可以通过滚动条进行垂直滚动。
5. file_names_raw = self.text_file_names.get("1.0", tk.END).split('、')
获取文本框 self.text_file_names 中的内容,并将其按照 '、' 分割成一个文件名列表。详细的说,self.text_file_names.get("1.0", tk.END) 会获取从文本框的第一行第一个字符("1.0")到最后一行最后一个字符(tk.END)的所有文本内容。这个返回的字符串包含了文本框中的所有文本。
接下来,.split('、') 将获取到的文本字符串按照 '、' 进行分割,得到一个文件名列表。就是说文本框中的文本会被按照 '、' 进行分隔,将每个文件名作为列表中的一个元素。
四、Python打包exe
pyinstaller --onefile --windowed --name "DocxCreator" DocxCreatorApp.py
将 "DocxCreator" 和 DocxCreatorApp.py 分别修改为你希望的exe名称和你的python文件名。