2011-08-17 17 views
6

Sto cercando di trovare una funzione python per la presentazione di una finestra di dialogo "salva file come" che restituisce un nome file come stringa.come utilizzare la finestra di dialogo di SaveAs di Python

Ho trovato rapidamente il modulo tkFileDialog, solo per rendermi conto che la sua funzione asksaveasfilename genera un'eccezione se il file inserito non esiste già, il che non è il comportamento che sto cercando.

Penso che la risposta che sto cercando è nel modulo Python FileDialog, ma la mia ipotesi migliore è che è il metodo della classe SaveFileDialogget_selection. Qui di seguito, potete vedere il mio goffo circa in modalità interattiva cercando di capire l'utilizzo:

>>> FileDialog.SaveFileDialog.get_selection() 
Traceback (most recent call last): 
    File "<interactive input>", line 1, in <module> 
TypeError: unbound method get_selection() must be called with SaveFileDialog instance as first argument (got nothing instead) 
>>> x = FileDialog.SaveFileDialog() 
Traceback (most recent call last): 
    File "<interactive input>", line 1, in <module> 
TypeError: __init__() takes at least 2 arguments (1 given) 

Prima stavo cercando di vedere se potevo solo richiamare la finestra di dialogo. Poi vedendo che avevo bisogno di un'istanza SaveFileDialog, ho provato ad assegnarne uno alla variabile x. Ma a quanto pare anche due argomenti, ed è lì che mi sento davvero perso.

Aiuto?

risposta

7

Ecco un piccolo esempio per la funzione asksaveasfilename(). Spero che tu possa usarlo:

import Tkinter, Tkconstants, tkFileDialog 

class TkFileDialogExample(Tkinter.Frame): 

    def __init__(self, root): 

     Tkinter.Frame.__init__(self, root) 
     button_opt = {'fill': Tkconstants.BOTH, 'padx': 5, 'pady': 5} 
     Tkinter.Button(self, text='asksaveasfilename', command=self.asksaveasfilename).pack(**button_opt) 

     self.file_opt = options = {} 
     options['filetypes'] = [('all files', '.*'), ('text files', '.txt')] 
     options['initialfile'] = 'myfile.txt' 
     options['parent'] = root 

    def asksaveasfilename(self): 
     filename = tkFileDialog.asksaveasfilename(**self.file_opt) 

     if filename: 
      return open(filename, 'w') 

if __name__=='__main__': 
    root = Tkinter.Tk() 
    TkFileDialogExample(root).pack() 
    root.mainloop() 

Sono stato in grado di aprire (e creare) file esistenti.

Problemi correlati