前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python开发GUI程序---tkinter试用

Python开发GUI程序---tkinter试用

原创
作者头像
MiaoGIS
修改2021-02-22 14:56:49
1.4K0
修改2021-02-22 14:56:49
举报
文章被收录于专栏:Python in AI-IOT

电脑上文档文件被流氓软件加密,文档打开后乱码,听说通过重命名将文件类型更换为*.js然后再更成原来的文件类型后缀可以实现解密,于是用tkinter写了一个简单的GUI程序方便此操作。既可以单独对一个文件,也可以对文件夹下的文件(不递归子文件夹)实现此操作。

代码如下:

代码语言:python
代码运行次数:0
复制
# -* - coding:utf-8 -*-
import os
import tkinter
import shutil
from tkinter import filedialog
from datetime import datetime


backupPath='D:/backup'

if not os.path.exists(backupPath):
    os.mkdir(backupPath)
root=tkinter.Tk()
root.title("文件备份")
dirBtn=tkinter.Button(root,text='打开目录')
dirBtn.grid(row=0,column=0)
dirLabel=tkinter.Label(root,text="你选择的目录")
dirLabel.grid(row=0,column=1)
okBtn1=tkinter.Button(root,text="OK")
okBtn1.grid(row=0,column=2)
fileBtn=tkinter.Button(root,text='打开文件')
fileBtn.grid(row=1,column=0)
fileLabel=tkinter.Label(root,text="你选择的文件")
fileLabel.grid(row=1,column=1)
okBtn2=tkinter.Button(root,text="OK")
okBtn2.grid(row=1,column=2)
tkinter.Label(root,text="为防止出错导致文件永久丢失或损坏,使用前请做好备份(D:/backup目录下保存有副本)").grid(row=2,columnspan=2)
tkinter.Label(root,text="打开目录只能处理直接位于该目录下的文件,对子目录不起作用").grid(row=3,columnspan=2)
global filedialog
global dirPath
global filePath
def openDirDialog(e):
    path=filedialog.askdirectory()                                 
    dirLabel['text']=path
    global dirPath
    dirPath=path
    print(path)

def openFileDialog(e):
    dialog=filedialog.askopenfile()
    if not dialog:
        return 
    path=dialog.name
        
    fileLabel['text']=path
    global filePath
    filePath=path
    print(path)

def souDir(e):
    global dirPath
    path=dirPath
    name=os.path.basename(path)
    backup=os.path.join(backupPath,name)
    if os.path.exists(backup):
        shutil.rmtree(backup)
    shutil.copytree(path,backup)
    files=os.listdir(path)
    for i in files:
        file=os.path.join(path,i)
        if(os.path.isfile(file)):      
            p,ext=os.path.splitext(file)
            if(ext!=''):
                os.rename(file,p+".js")
                os.rename(p+'.js',p+ext)

def souFile(e):
    global filePath
    path=filePath
    name=os.path.basename(path)
    #now=datetime.now()
    
    #name=name+'_'+now.strftime('%Y-%m-%d-%H-%M-%S')
    backUp=os.path.join(backupPath,name)
   
    shutil.copyfile(path,backUp)
    
    
    p,ext=os.path.splitext(path)
    if(ext!=''):
        os.rename(path,p+".js")
        os.rename(p+'.js',p+ext)
dirBtn.bind('<Button-1>',openDirDialog)
okBtn1.bind('<Button-1>',souDir)
fileBtn.bind('<Button-1>',openFileDialog)
okBtn2.bind('<Button-1>',souFile)

root.mainloop()




原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档