如何使用Python SaveAs对话框
我正在寻找一个Python函数,可以打开一个“另存为”对话框,并返回一个文件名作为字符串。
我很快找到了tkFileDialog
模块,但发现它的asksaveasfilename
函数会在输入的文件名不存在时抛出异常,这不是我想要的效果。
我觉得我想要的答案可能在Python的FileDialog
模块里,但我猜可能是SaveFileDialog
类的get_selection
方法。下面是我在交互模式下试图搞清楚用法时的一些尝试:
>>> 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)
起初我只是想看看能否直接调用对话框。然后我发现需要一个SaveFileDialog
的实例,于是我试着把它赋值给变量x
。但显然这也需要两个参数,这让我真的很困惑。
有人能帮帮我吗?
1 个回答
7
这里有一个关于 asksaveasfilename()
函数的小例子。希望你能用得上:
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()
我可以打开(并创建)那些不存在的文件。