python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python批量添加字符

Python+Tkinter编写一个批量字符添加工具

作者:小庄-Python办公

在日常开发或数据处理工作中,我们经常会遇到需要给一堆列表数据添加引号、逗号的情况,今天我们就用 Python 自带的 tkinter 库,写一个轻量级的桌面小工具,实现一键批量添加前后缀并复制到剪贴板

在日常开发或数据处理工作中,我们经常会遇到需要给一堆列表数据添加引号、逗号的情况。比如把 Excel 里的 ID 列表转换成 SQL 的 IN 查询条件,或者转成 JSON 数组格式。

手动一行行修改非常繁琐,今天我们就用 Python 自带的 tkinter 库,写一个轻量级的桌面小工具,实现一键批量添加前后缀并复制到剪贴板

需求分析

我们需要一个简单的界面,包含以下功能:

结果演示

假设我们输入:

华东重客海外仓2
华东重客冷运1
华东重客冷运2

设置左侧为 ",右侧为 ",,点击处理后得到:

"华东重客海外仓2",
"华东重客冷运1",
"华东重客冷运2",

工具界面图

代码实现

我们不需要安装任何第三方库,直接使用 Python 标准库中的 tkinter

1. 界面布局

使用 tk.Frame 将界面分为上、中、下三部分:

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()

如何使用

这样,一个小巧实用的办公辅助工具就完成啦!希望这个小脚本能帮你节省一些重复劳动的时间。

到此这篇关于Python+Tkinter编写一个批量字符添加工具的文章就介绍到这了,更多相关Python批量添加字符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文