我正在使用python tkinter创建一个简单的日志程序,允许用户在Text
小部件内写入文本,并使用该文件作为“日志”将其保存到文件中。使用asksaveasfilename
我可以保存文件,但不会使用文件扩展名保存文件。我意识到你可以使用.defaultextension
,但我希望用户使用他们选择的扩展名保存文件。这是我的代码:
from datetime import datetime
now = datetime.now()
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from tkinter import font
journal_name = ""
def save_journal():
journal_name = filedialog.asksaveasfilename(filetypes = [("Text file", ".txt"), ("Python file", ".py"), ("All Types", ".*")])
file = open(journal_name, "a")
file.write("%s/%s/%s" % (now.month, now.day, now.year))
file.write(" ")
file.write(text_box.get("1.0", "end-1c"))
file.write("\n\n")
file.close()
#make a gui window
app = Tk()
app.title("Journal Program")
app.iconbitmap(app, "C:\\Program Files (x86)\\Notepad++\\Files\\journalicon.ico")
app.resizable(0,0)
text_font = font.Font(family="Segoe UI", size=11)
#main frame
main_frame = ttk.Frame(app, padding = "5 5 5 5")
main_frame.grid(column=0, row=0, sticky="nsew")
text_box = Text(main_frame, wrap = WORD, height = 15, width = 70, font = text_font)
scrollbar = ttk.Scrollbar(main_frame)
scrollbar.config(command = text_box.yview)
text_box.config(yscrollcommand = scrollbar.set)
text_box.grid(column = 1, columnspan = 3, row = 2, sticky = "es")
scrollbar.grid(column = 4, row = 2, sticky = "ns")
save_button = ttk.Button(main_frame, text = "Save", command = save_journal)
save_button.grid(column = 3, row = 3, sticky = S + E, pady = '5')
app.mainloop()
我想要的是让用户能够从另存为窗口中选择文件类型(例如python),并将其作为保存文件的文件扩展名。我不确定它是否可能,但如果它是我真的很感激帮助,我无法找到任何关于此类事情的信息。
我希望这不是一个堆栈溢出问题的代码。我试图将它缩小到最小程序。此外,我意识到代码可以优化,但我仍在学习python,并试图解决问题。任何关于如何优化此代码的评论或帮助也将非常感激。提前谢谢大家。