2016-03-22 13 views
0

「名前を付けて保存」プロンプトからpython tkinterウィンドウからファイルを保存しようとしています。私はしばらくの間探しましたが、私が探している答えを見つけることができないようです。私は正常に情報をデフォルトの名前でファイルに保存でき、input()でユーザーが入力した名前で保存することもできますが、これは私がやろうとしていることではありません。私は、ユーザーが「名前を付けて保存」をクリックできるようにして、プロンプトが表示されたらファイル名を入力してその名前を保存して、どこでも答えを見つけることができないようにしたい。ここでは、この時点で私のコードは次のとおりです。Python:ユーザー入力に基づいてファイルを保存する

# 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 

私は、「ファイル名.txt」はしかし、どのように私はプロンプトから変数名を取得しない、に保存するファイルの名前であることを理解できますか?

注:このコードにはエラーはありません。プログラムの残りの部分で正常に動作します。

答えて

1

"filename.txt"ではなくasksaveasfileおよびfnameの代わりにasksaveasfilenameを使用できます。

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

ありがとうございました!私は単純に次の行を変更しました: 'fname = asksaveasfile(... ' open( "filename.txt"、 'wb')with f: ' 〜: ' fname = asksaveasfilename(... ' 'with open(ファイル名+"。txt "、" wb ")f:' これはいつも私を得るsimpeものです。 –

関連する問題