我正在用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'按钮之后关闭,非常感谢你们,并且因为我的英语不那么好而撒谎^^'