Python: 根据用户输入保存文件
Python: Save a file based on user input
我正在尝试通过 'Save As' 提示从 python tkinter window 保存文件。我已经找了一段时间了,似乎找不到我要找的答案。我可以成功地将信息保存到一个具有默认名称的文件中,甚至可以使用用户通过 input() 输入的名称来保存它,但是,这不是我想要做的。我希望用户能够单击 'Save As' 然后当出现提示时,他们输入文件名并将其保存为该名称,我似乎无法在任何地方找到答案。这是我此时的代码:
# 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
我知道 "filename.txt" 是要保存到的文件的名称,但是如何从提示中获取变量名称?
注意:此代码中没有错误,它与我程序的其余部分一起运行良好。
您可以使用 asksaveasfilename
代替 asksaveasfile
和 fname
代替 "filename.txt"
。
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 """
我正在尝试通过 'Save As' 提示从 python tkinter window 保存文件。我已经找了一段时间了,似乎找不到我要找的答案。我可以成功地将信息保存到一个具有默认名称的文件中,甚至可以使用用户通过 input() 输入的名称来保存它,但是,这不是我想要做的。我希望用户能够单击 'Save As' 然后当出现提示时,他们输入文件名并将其保存为该名称,我似乎无法在任何地方找到答案。这是我此时的代码:
# 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
我知道 "filename.txt" 是要保存到的文件的名称,但是如何从提示中获取变量名称?
注意:此代码中没有错误,它与我程序的其余部分一起运行良好。
您可以使用 asksaveasfilename
代替 asksaveasfile
和 fname
代替 "filename.txt"
。
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 """