2011-08-17 29 views
6

Tôi đang cố gắng tìm một hàm python để trình bày hộp thoại 'lưu tệp dưới dạng' trả về tên tệp dưới dạng chuỗi.cách sử dụng hộp thoại Lưu trữ Python

Tôi nhanh chóng tìm thấy mô-đun tkFileDialog, chỉ để nhận ra rằng chức năng asksaveasfilename của nó ném ngoại lệ nếu tệp được nhập không tồn tại, đó không phải là hành vi tôi đang tìm kiếm.

Tôi nghĩ câu trả lời mà tôi đang tìm kiếm nằm trong mô-đun Python FileDialog, nhưng tôi đoán tốt nhất là phương pháp get_selection của lớp SaveFileDialog. Dưới đây, bạn có thể thấy sự sai lầm của tôi về chế độ tương tác cố gắng tìm ra cách sử dụng:

>>> 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) 

Đầu tiên tôi đang cố gắng xem liệu tôi có thể gọi hộp thoại hay không. Sau đó, thấy rằng tôi cần một cá thể SaveFileDialog, tôi đã cố gắng gán một biến cho biến số x. Nhưng dường như cũng có hai lý lẽ, và đó là nơi tôi thực sự bị lạc.

Trợ giúp?

Trả lời

7

Dưới đây là ví dụ nhỏ cho hàm asksaveasfilename(). Tôi hy vọng bạn có thể sử dụng nó:

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() 

Tôi có thể mở (và tạo) các tệp tồn tại.

Các vấn đề liên quan