命令后关闭TopLevel窗口

时间:2015-03-28 18:33:11

标签: 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_arxiu - > obre_finestra(召唤asksaveasfilename和小窗口),当我按'执行'执行executar_commanda然后我想要杀死窗口

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

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

所以最后我只想让路径窗口在它执行'Executar'按钮之后关闭,非常感谢你们,并且因为我的英语不那么好而撒谎^^'

0 个答案:

没有答案