2016-03-22 17 views
0

Bir 'Farklı Kaydet' komutuyla bir python tfteker penceresinden bir dosyayı kaydetmeye çalışıyorum. Bir süredir aradım ve aradığım cevabı bulamıyorum. Bilgileri varsayılan bir ada sahip bir dosyaya başarılı bir şekilde kaydedebilir ve hatta girdi() aracılığıyla kullanıcı girdilerinin adını kullanarak kaydedebilirim, ancak bu, yapmaya çalıştığım şey değil. Kullanıcının 'Farklı Kaydet' seçeneğini tıklayabilmesini istiyorum, ardından bilgi geldiğinde dosya adını giriyor ve bu isim olarak kaydediyor, sadece herhangi bir yerde bir cevap bulamıyorum. İşte bu noktada kodum: Ben isteminden değişken adı kazanmak nasılPython: Kullanıcı girdisine bağlı olarak bir dosya kaydetme

# Import Tkinter 
from tkinter import * 
import os 
import pickle 
from tkinter.filedialog import askopenfilename, asksaveasfile 
from tkinter.messagebox import * 

MainWindow = Tk() 
MainWindow.geometry("600x400") 
MainWindow.attributes("-alpha", 1) 
MainWindow.title(string="Hours Log") 
CurrentDirect=os.getcwd() 

def FileSaveAs(): 
fname = asksaveasfile(initialdir=CurrentDirect ,filetypes=(("Text Files", "*.txt"), 
             ("All files", "*.*"))) 
if fname: 
     try: 
      print(fname) 
      SH = SHVar.get() 
      SM = SMVar.get() 
      SAP = SAPVar.get() 
      EH = EHVar.get() 
      EM = EMVar.get() 
      EAP = EAPVar.get() 
      DM = DMVar.get() 
      DD = DDVar.get() 
      DY = DYVar.get() 
      DE = Description.get("1.0", END) 
      AP = APVar.get() 
      with open("filename.txt", 'wb') as f: 
       pickle.dump([SH, SM, SAP, EH, EM, EAP, DM, DD, DY, DE, AP], f) 

     except: 
      showerror("FILE SAVE ERROR", "Error on Saving File!\n'%s'" % fname) 
     return 

ben "filename.txt" Ancak kaydetmek için dosyanın adıdır anlıyoruz?

NOT: Bu kodda hata yok, programımın geri kalanıyla sorunsuz çalışıyor.

cevap

1

asksaveasfile yerine asksaveasfilename ve "filename.txt" yerine fname kullanabilirsiniz.

60 def asksaveasfile(self): 
    61 
    62  """Returns an opened file in write mode.""" 
    63 
    64  return tkFileDialog.asksaveasfile(mode='w', **self.file_opt) 
    65 
    66 def asksaveasfilename(self): 
    67 
    68  """Returns an opened file in write mode. 
    69  This time the dialog just returns a filename and the file is opened by your own code. 
    70  """ 
+0

Bu işe yaradı, teşekkürler! Ben sadece gelen satırları değiştirildi: 'fname asksaveasfile (...' 'open ("dosyaadı.txt" ile,) 'wb' f olarak =:' için: 'fname' ... (asksaveasfilename = 'açık (dosya adı +". Txt "," wb ") ile f:' Her zaman bana gelen simpe olanlar. –

İlgili konular