使用Python的tkinter模块实现界面化的批量修改文件名(续)

编程之家收集整理的这篇文章主要介绍了使用Python的tkinter模块实现界面化的批量修改文件名(续)编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

  之前的《使用Python的tkinte模块实现界面化的批量修改文件名》主要实现了批量移除文件名中的指定字符串,无法进行替换,本文在前面工作的基础上,增加批量替换文件名中指定字符串的功能
  新增的功能点不多,主要包括

  • 单选框控件:使用tkinter.Radiobutton函数创建单选框控件,并用value属性设置单选框对应的值,也即选中单选框时得到的值,提前定义好变量(本文中定义了Int变量),创建单选框控件时用variable属性绑定变量。如果要设置认选中的单选框,则直接设置变量值为指定单选框对应的value值即可;
  • 设置文本框的认状态:文本框使用state属性设置文本框的可用状态,包括normal/disabled,可以在创建Entry时指定文档框的state属性disabled,则文本框认不可用;
  • 修改控件属性:除了在创建控件时指定属性值之外,在程序运行过程中修改控件属性有多种方式(详见参考文献5),本文采用通过字典键设置属性方式动态修改文本框的可用状态。

  批量修改文件名程序的完整代码如所示:

# coding=gbk

import tkinter as tk
import os
from tkinter.filedialog import askdirectory

def browseDri():
    txtDirPath.set(askdirectory())

def SetControlStatus():
    mode=processMode.get()
    if(mode==1):
        txtRemoved['state'] = 'normal'
        txtBeforeReplaced['state'] = 'disabled'
        txtAfterReplaced['state'] = 'disabled'
        btnProcess['text']='移除'
    elif mode==2:
        txtRemoved['state'] = 'disabled'
        txtBeforeReplaced['state'] = "normal"
        txtAfterReplaced['state'] = 'normal'
        btnProcess['text']='替换'

def BatchReplaceFileName():
    path = txtDirPath.get()
    mode=processMode.get()

    if(mode==1):
        strOldSign=txtRemovedContent.get()
        strNewSign=""        
    elif mode==2:
        strOldSign=txtBeforeReplactContent.get()
        strNewSign=txtAfterReplactContent.get()

    files=os.listdir(path)
    for onefile in files:
        if onefile.find(strOldSign)<0:
            continue
        oldname=path+"\\"+onefile
        newname=path+"\\"+onefile.replace(strOldSign,strNewSign)
        os.rename(oldname,newname)
        print(oldname,"====>",newname)
        
window=tk.Tk()
window.title('批量处理文件名')
window.geometry('400x300')

tk.Label(window,text='选择文件夹').grid(row=0,column=0)
txtDirPath=tk.StringVar()
tk.Entry(window,textvariable=txtDirPath).grid(row=0,column=1)
tk.Button(window,text='浏览',command=browseDri).grid(row=0,column=2)

processMode =tk.Intvar()
tk.Radiobutton(window, text="移除内容", variable=processMode, value=1, command=SetControlStatus).grid(row=1,column=0)
tk.Label(window,text='输入要移除的内容:').grid(row=1,column=1)
txtRemovedContent=tk.StringVar()
txtRemoved=tk.Entry(window,textvariable=txtRemovedContent)
txtRemoved.grid(row=1,column=2)
tk.Radiobutton(window, text="替换内容", variable=processMode, value=2, command=SetControlStatus).grid(row=2,column=0)
tk.Label(window,text='输入替换前的内容:').grid(row=2,column=1)
txtBeforeReplactContent=tk.StringVar()
txtBeforeReplaced=tk.Entry(window,textvariable=txtBeforeReplactContent,state='disabled')
txtBeforeReplaced.grid(row=2,column=2)
tk.Label(window,text='输入替换后的内容:').grid(row=3,column=1)
txtAfterReplactContent=tk.StringVar()
txtAfterReplaced=tk.Entry(window,textvariable=txtAfterReplactContent,state='disabled')
txtAfterReplaced.grid(row=3,column=2)

processMode.set(1)

btnProcess=tk.Button(window,text='移除',command=BatchReplaceFileName)
btnProcess.grid(row=4,column=0)

tk.mainloop()

  最后是程序效果,如下图所示,选择指定文件夹,首先将文件夹中所有文件中的car字符串替换为che@,接着再移除文件名中的@字符。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

参考文献
[1]https://blog.csdn.net/qq_21238607/article/details/108824662
[2]https://blog.csdn.net/flysh13/article/details/123465292
[3]https://blog.csdn.net/cadi2011/article/details/122464311
[4]https://www.runoob.com/python/python-gui-tkinter.html
[5]https://www.cnblogs.com/wbdzt/articles/15516926.html

总结

以上是编程之家为你收集整理的使用Python的tkinter模块实现界面化的批量修改文件名(续)全部内容。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给好友。

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
数据集地址:链接:https://pan.baidu.com/s/1vQgkQs1aTC-zm6zcDH4kKQ提取码:6ois。
转载:https://www.cnblogs.com/qgc1995/archive/2018/08/29/9553572.html一,Docke
插件leaflet-minimap。
银河麒麟高级服务器操作系统V10SP1 - ISO镜像定制 + KickStart自动化安装
ODBC连接MySQL数据库、TLex配置ODBC