命令后关闭顶层窗口

2024-06-02 07:11:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python做一个简单的压缩程序来完成一个学校作业,我的问题是当你输入文件名时,会出现一个小窗口,上面有一个执行tar命令的按钮,我希望这个窗口在执行命令后关闭,但我不知道为什么,这是我的代码

def crea_arxiu():
    global aux
    if v.get() is 1 or v.get() is 2 or v.get() is 3 or v.get() is 4:
        f = open('fitxers.txt','w')
        for i in range(llista2.size()):
            f.write(llista2.get(i)+'\n')
        f.close()
        print 'Arxius a comprimir:',llista2.size()  
        obre_finestra()

        if aux is 1:
            print 'AUX IS TRUE'
            subprocess.call(['rm','fitxers.txt'])
    else: 
        print 'Escolleix una opcio'
#Aquest mètode crea i mostra la pantalla per guardar el nom
#i i la finestra amb la comanda que executara
def obre_finestra():
    global aux
    ruta_text = StringVar()

    finestra2=Toplevel(finestra)
    finestra2.minsize(0,0)
    finestra2.title('Comanda a executar:')
    ruta = Label(finestra2, width=60, relief=SUNKEN, textvariable=ruta_text)
    ruta.pack(side=LEFT)
    boto = Button(finestra2, text = 'Executar', command = lambda: executar_commanda(nom_arxiu, tipus_comp))
    boto.pack(side = RIGHT)
    nom_arxiu = tkFileDialog.asksaveasfilename(title='Guardar com')

    if v.get() is 1:
        tipus_comp = 'cf'
        nom_arxiu = nom_arxiu+'.tar'
    elif v.get() is 2:
        tipus_comp = 'czf'
        nom_arxiu = nom_arxiu+'.tgz'
    elif v.get() is 3:
        tipus_comp = 'cjf'
        nom_arxiu = nom_arxiu+'.tbz'
    elif v.get() is 4:
        tipus_comp = 'cJf'
        nom_arxiu = nom_arxiu+'.txz'
    ruta_text.set('tar '+tipus_comp+' '+nom_arxiu+' '+'fitxers de la llista')
    if aux is 1:
        finestra2.destroy()

def executar_commanda(nom,tipus_comp):
    global aux 
    aux = 1
    subprocess.call(['tar',tipus_comp,nom,'-T','fitxers.txt'])

函数的顺序是:crea\u arxiu->;obre\u finestra(调用asksaveasfilename和小窗口),当我按“Execute”时,executar\u commanda执行,然后我希望窗口被杀死

在输入文件名之前: http://imgur.com/KOgxIe3

给出名称后: http://imgur.com/zDB5Bbs

所以最后我只希望路径窗口关闭后,它去'Executar'按钮,所以非常感谢你们和sry为我的英语不是那么好^ ^'


Tags: textgetifistarnomlacomp