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

 更新时间:2025年12月19日 08:47:37   作者:小庄-Python办公  
在日常开发或数据处理工作中,我们经常会遇到需要给一堆列表数据添加引号、逗号的情况,今天我们就用 Python 自带的 tkinter 库,写一个轻量级的桌面小工具,实现一键批量添加前后缀并复制到剪贴板

在日常开发或数据处理工作中,我们经常会遇到需要给一堆列表数据添加引号、逗号的情况。比如把 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批量添加字符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中chinesecalendar简介、安装、使用方法详细讲解

    Python中chinesecalendar简介、安装、使用方法详细讲解

    这篇文章主要介绍了Python中chinesecalendar简介、安装、使用方法详细讲解,该库是判断某年某月某一天是不是工作日/节假日。 支持 2004年 至 2023年,包括 2020年 的春节延长,需要的朋友可以参考下
    2023-03-03
  • Python实现自动化处理PDF文件的方法详解

    Python实现自动化处理PDF文件的方法详解

    这篇文章主要为大家详细介绍了如何使用Python完成简单的PDF文件处理操作,如PDF文件的批量合并、拆分、加密以及添加水印等,需要的可以参考一下
    2022-09-09
  • 使用Jupyter notebooks上传文件夹或大量数据到服务器

    使用Jupyter notebooks上传文件夹或大量数据到服务器

    这篇文章主要介绍了使用Jupyter notebooks上传文件夹或大量数据到服务器,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python将文本分每两行一组并保存到文件

    python将文本分每两行一组并保存到文件

    这篇文章主要介绍了python将文本分每两行一组并保存到文件,需要的朋友可以参考下
    2018-03-03
  • Python爬虫实战之使用Scrapy爬取豆瓣图片

    Python爬虫实战之使用Scrapy爬取豆瓣图片

    在用Python的urllib和BeautifulSoup写过了很多爬虫之后,本人决定尝试著名的Python爬虫框架——Scrapy.本次分享将详细讲述如何利用Scrapy来下载豆瓣名人图片,需要的朋友可以参考下
    2021-06-06
  • pythonfor循环中range与len区别

    pythonfor循环中range与len区别

    这篇文章主要介绍了pythonfor循环中range与len区别,文章围绕主题展开详细的内容介绍,具有一定参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • 零基础写python爬虫之使用urllib2组件抓取网页内容

    零基础写python爬虫之使用urllib2组件抓取网页内容

    文章详细介绍了在python2.5环境下,如何使用urllib2这个python自带的组件进行抓取指定网页内容的,整个过程记录的非常的详细,也很简单,有需要的朋友可以参考下,写出自己的python爬虫
    2014-11-11
  • Python中json库的操作指南

    Python中json库的操作指南

    JSON是存储和交换文本信息的语法,类似XML,JSON比XML更小、更快,更易解析,且易于人阅读和编写,下面这篇文章主要给大家介绍了关于Python中json库的操作指南,需要的朋友可以参考下
    2023-04-04
  • 利用Python抓取行政区划码的方法

    利用Python抓取行政区划码的方法

    做项目的时候会需要用到各个行政区划的代码,最近就碰巧遇到有这个需求,于是就上网搜了一下,测试后分享给大家,这篇文章就给大家分享了利用Python抓取行政区划码的示例代码,有需要的朋友们可以参考借鉴,下面跟着小编一起去学习学习吧。
    2016-11-11
  • Python数据分析中正则表达式匹配字符串与常用函数示例详解

    Python数据分析中正则表达式匹配字符串与常用函数示例详解

    正则表达式是处理文本数据的强大工具,Python通过re模块提供了完整的正则表达式功能,这篇文章主要介绍了Python数据分析中正则表达式匹配字符串与常用函数的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-05-05

最新评论