how to use Python SaveAs dialog
Here is a small example for the asksaveasfilename()
function. I hope you can use it:
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()
I was able to open (and create) in-existent files.
Admin
Updated on July 09, 2022Comments
-
Admin almost 2 years
I'm trying to find a python function for presenting a 'save file as' dialog that returns a filename as a string.
I quickly found the
tkFileDialog
module, only to realize that itsasksaveasfilename
function throws an exception if the file entered doesn't already exist, which is not the behavior I'm looking for.I think the answer I'm looking for is in the Python
FileDialog
module, but my best guess is that it's theget_selection
method of theSaveFileDialog
class. Below, you can see my blundering about in interactive mode trying to figure out usage:>>> 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)
First I was trying to see if I could just invoke the dialog box. Then seeing that I needed a
SaveFileDialog
instance, I tried to assign one to the variablex
. But apparently that also takes two arguments, and that's where I get really lost.Help?