在日常开发或数据处理工作中,我们经常会遇到需要给一堆列表数据添加引号、逗号的情况。比如把 excel 里的 id 列表转换成 sql 的 in 查询条件,或者转成 json 数组格式。
手动一行行修改非常繁琐,今天我们就用 python 自带的 tkinter 库,写一个轻量级的桌面小工具,实现一键批量添加前后缀并复制到剪贴板。
需求分析
我们需要一个简单的界面,包含以下功能:
- 输入区域:可以粘贴多行文本。
- 配置区域:可以指定每行开头添加什么(比如
"),结尾添加什么(比如",)。 - 操作按钮:点击后自动处理文本,并将结果复制到剪贴板。
结果演示
假设我们输入:
华东重客海外仓2
华东重客冷运1
华东重客冷运2
设置左侧为 ",右侧为 ",,点击处理后得到:
"华东重客海外仓2",
"华东重客冷运1",
"华东重客冷运2",
工具界面图

代码实现
我们不需要安装任何第三方库,直接使用 python 标准库中的 tkinter。
1. 界面布局
使用 tk.frame 将界面分为上、中、下三部分:
- 顶部:输入框,用于设置左侧和右侧的符号。
- 中部:大文本框(
text组件),用于粘贴和显示数据。 - 底部:操作按钮和状态栏。
2. 核心逻辑
获取文本框内容后,按行分割,遍历每一行进行字符串拼接,最后再合并回字符串。
3. 完整代码 (text_wrapper.py)
import tkinter as tk
from tkinter import messagebox
class textwrapperapp:
def __init__(self, root):
self.root = root
self.root.title("字符批量添加工具")
self.root.geometry("600x500")
# === 顶部配置区域 ===
config_frame = tk.frame(root, pady=10)
config_frame.pack(fill=tk.x, padx=10)
# 左侧符号配置
tk.label(config_frame, text="左侧添加:").pack(side=tk.left, padx=5)
self.prefix_entry = tk.entry(config_frame, width=15)
self.prefix_entry.pack(side=tk.left, padx=5)
self.prefix_entry.insert(0, '"') # 默认值
# 右侧符号配置
tk.label(config_frame, text="右侧添加:").pack(side=tk.left, padx=5)
self.suffix_entry = tk.entry(config_frame, width=15)
self.suffix_entry.pack(side=tk.left, padx=5)
self.suffix_entry.insert(0, '",') # 默认值
# === 中间文本区域 ===
text_frame = tk.frame(root, padx=10, pady=5)
text_frame.pack(fill=tk.both, expand=true)
tk.label(text_frame, text="请在下方粘贴文本:").pack(anchor=tk.w)
# 滚动条和文本框
scrollbar = tk.scrollbar(text_frame)
scrollbar.pack(side=tk.right, fill=tk.y)
self.text_area = tk.text(text_frame, wrap=tk.none, height=15, yscrollcommand=scrollbar.set)
self.text_area.pack(side=tk.left, fill=tk.both, expand=true)
scrollbar.config(command=self.text_area.yview)
# === 底部按钮区域 ===
btn_frame = tk.frame(root, pady=10)
btn_frame.pack(fill=tk.x, padx=10)
# 处理并复制按钮
process_btn = tk.button(
btn_frame,
text="处理并复制结果",
command=self.process_and_copy,
bg="#0078d7",
fg="white",
font=("microsoft yahei", 10, "bold"),
padx=10,
pady=5
)
process_btn.pack(side=tk.left, padx=5)
# 清空按钮
clear_btn = tk.button(
btn_frame,
text="清空内容",
command=self.clear_text,
padx=10,
pady=5
)
clear_btn.pack(side=tk.left, padx=5)
# 状态栏
self.status_label = tk.label(root, text="准备就绪", bd=1, relief=tk.sunken, anchor=tk.w)
self.status_label.pack(side=tk.bottom, fill=tk.x)
def process_and_copy(self):
# 获取前后缀
prefix = self.prefix_entry.get()
suffix = self.suffix_entry.get()
# 获取文本框内容
content = self.text_area.get("1.0", tk.end)
if not content.strip():
messagebox.showwarning("提示", "文本框为空,请输入内容!")
return
lines = content.split('\n')
processed_lines = []
count = 0
for line in lines:
stripped_line = line.strip()
if stripped_line:
processed_lines.append(f"{prefix}{stripped_line}{suffix}")
count += 1
if count == 0:
messagebox.showinfo("提示", "没有检测到有效文本行。")
return
result_text = "\n".join(processed_lines)
# 更新文本框显示结果
self.text_area.delete("1.0", tk.end)
self.text_area.insert("1.0", result_text)
# 复制到剪贴板
self.root.clipboard_clear()
self.root.clipboard_append(result_text)
self.root.update()
self.status_label.config(text=f"成功处理 {count} 行,并已复制到剪贴板!")
messagebox.showinfo("成功", f"已完成!\n共处理 {count} 行数据。\n结果已复制到剪贴板。")
def clear_text(self):
self.text_area.delete("1.0", tk.end)
self.status_label.config(text="内容已清空")
if __name__ == "__main__":
root = tk.tk()
app = textwrapperapp(root)
root.mainloop()
如何使用
- 将上面的代码保存为
text_wrapper.py。 - 确保电脑上安装了 python。
- 在命令行运行
python text_wrapper.py,或者创建一个.bat批处理文件双击运行。
这样,一个小巧实用的办公辅助工具就完成啦!希望这个小脚本能帮你节省一些重复劳动的时间。
到此这篇关于python+tkinter编写一个批量字符添加工具的文章就介绍到这了,更多相关python批量添加字符内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论