exe文件执行和右键不同效果如何实现

creo保存文件如a001.prt.1,a001.prt.2,a003.drw.3.,b001.asm.3,b001.asm.4等在文件后面带数字,表示不同版本,可以使用软件自带purge命令清除保留最新版本(同名文件数字最大)
1.prt,asm,drw文件保留最后的版本
2.部分特定文件清除
下面的代码运行可以实现目标功能,生成exe文件运行界面如图所示,选择文件夹,点击清除旧版本,就可以清除不要的文件。现在需要在界面上添加一个选择按钮(勾选将清理功能添加到鼠标右键),勾选选择按钮后,右键点选需要清理的文件夹,点击清理,直接运行程序清理旧版本(不跳出界面),但是双击运行exe文件,还会跳出界面(因为有些文件是否要清除需要设定,可能会有所更改,现在的程序还没写这部分)。我以前用的一个别人做的软件是这样运行的。请指导一下怎么实现

from tkinter import *  # 导入相关模块
from tkinter.filedialog import *
from tkinter import messagebox
import os

def set_directory(arg):
    set_path = askdirectory()
    arg.set(set_path)
    global list_log_txt
    global list_del
    list_log_txt = []
    list_del = []  # 储存需要删除的文件名
    list_split = []  # 储存切片后的文件名,用于对比名字
    dic_max = {}  # 储存编号最大的文件名(只有一个就是它)
    for root,dirs,files in os.walk(set_path):
        for filename in files:
            filename_split = filename.rsplit(".",1)
            if filename_split[1].isdigit() == True:
                if filename_split[0].split(".")[1] == "log" or filename_split[0].split(".")[1] == "txt":
                    list_log_txt.append(filename)
                else:          
                    list_split.append(filename_split)
                    list_del.append(filename)
    for split in list_split:
        if split[0] in dic_max.keys():    
            if int(split[1])>dic_max[split[0]]:   # 列表元素split[1]大于字典dic_max中key(split[0])对应的value
                dic_max[split[0]]=int(split[1])   # 字典dic_max中key(split[0])对应的value值变为int(split[1])
        else:
            dic_max[split[0]]= int(split[1])   # split[0]作为key split[1]作为value
    for k in dic_max.keys():
        list_del.remove((k+"."+str(dic_max[k])))

def clear_log_txt():   #删除log,txt文件
    file_path = var_choose.get()
    for name in list_log_txt:
        filename = file_path+r'/'+name
        os.remove(filename)

def clear_prt_drw_asm():   #删除list_del中的文件 prt,drw,asm文件
    file_path = var_choose.get()
    for name in list_del:
        filename = file_path+r'/'+name
        os.remove(filename)

def clear():
    clear_prt_drw_asm()
    clear_log_txt()
    
if __name__ == "__main__":
    #建立主窗口并居中
    root = Tk()
    sw = root.winfo_screenwidth()
    sh = root.winfo_screenheight()
    rw = 500
    rh = 700
    rx = (sw-rw)/2
    ry = (sh-rh)/2
    root.geometry("%dx%d+%d+%d"%(rw,rh,rx,ry))
    root.title("purge")
    Label(root,text="目标文件夹",height=1).pack()
    var_choose = StringVar()
    # 文本属性textvariable  可变文本,与StringVar等配合着用
    label_path = Entry(root,textvariable=var_choose,width=60).pack()
    # 设置输入目录 command: 指定按钮消息的回调函数;
    Button(root,text="选择目录",height=1,command=lambda:set_directory(var_choose)).pack()
    Button(root,text="清除旧版本",height=1,command=lambda:clear()).pack()

    root.mainloop()

img