如何使用Python SaveAs对话框

时间:2011-08-17 14:13:30

标签: python tkinter

我正在尝试找到一个python函数,用于显示“保存文件为”对话框,该文件夹将文件名作为字符串返回。

我很快找到了tkFileDialog模块,只是意识到如果输入的文件不存在,它的asksaveasfilename函数会抛出异常,这不是我正在寻找的行为。 / p>

我认为我正在寻找的答案是在Python FileDialog模块中,但我最好的猜测是它是get_selection类的SaveFileDialog方法。下面,您可以看到我在交互模式中的错误,试图找出用法:

>>> 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 个答案:

答案 0 :(得分: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()

我能够打开(并创建)现存的文件。