TSSIT:

from tkinter import *
from tkinter import scrolledtext
from tkinter import filedialog
from tkinter.messagebox import showinfo
tela = Tk()
tela.title('TSSITEditor')
tela.geometry('600x700')
escr = Frame(tela, width= 600, height=650, bd = 7, relief='raise')
escr.pack(side=BOTTOM)
escr.pack_propagate(0)
global texto
texto = scrolledtext.ScrolledText(escr, height= 550, width=700)
texto.pack()
opcoes = Frame(tela, width=600, height=50, bd = 4, relief='sunken')
opcoes.pack(side=TOP)
opcoes.pack_propagate(0)
def abrir():
    global filename
    filename = filedialog.askopenfilename(defaultextension=".txt")
    texto.delete('1.0', END)
    try:
        with open(filename, "r") as f:
            texto.insert(1.0, f.read())
            tela.title = filename
    except:
        pass
abrir = Button(opcoes, text= 'Open', command= abrir)
abrir.pack(side=LEFT)
def branco():
  global texto
  texto.delete('1.0', END)
  global certe
  certe.destroy()
def quitar_real():
  global certe
  certe.destroy()
  tela.destroy()
def novo():
    global texto
    nova = filedialog.asksaveasfilename(
        initialfile="Untitled.TSSIT",
        defaultextension=".TSSIT",)
    try:
        with open(nova, "w") as f:
            f.write(text.get())
    except:
        pass
def quitar():
    global certe
    certe = Tk()
    certe.geometry('300x150')
    certe.title('Save Changes?')
    titl = Label(certe, text = """Would You like to save
your changes first?""", font=('courier', 15))
    titl.pack(side=TOP)
    salve = Button(certe, text= 'Yes, save', command= lambda:salva('quit'))
    salve.pack(side=TOP)
    salve = Button(certe, text= 'No, loose all unsaved changes', command= quitar_real)
    salve.pack(side=TOP)
fexar = Button(opcoes, text= 'Quit', command= quitar)
fexar.pack(side=LEFT)
def quitar2():
    global certe
    certe = Tk()
    certe.geometry('300x150')
    certe.title('Save Changes?')
    titl = Label(certe, text = """Would You like to save
your changes first?""", font=('courier', 15))
    titl.pack(side=TOP)
    salve = Button(certe, text= 'Yes, save', command= lambda:salva('new'))
    salve.pack(side=TOP)
    salve = Button(certe, text= 'No, loose all unsaved changes', command= branco)
    salve.pack(side=TOP)
bran = Button(opcoes, text= 'New', command= quitar2)
bran.pack(side=LEFT)
def salva(func='none'):
    global texto
    global filename
    global certe
    try:
        text_final = texto.get('1.0', END)
        f= open(filename,"w+")
        f.write(text_final)
    except:
        novo()
    if func == 'new':
      branco()
    elif func == 'quit':
      quitar_real()
    certe.destroy()
salvar = Button(opcoes, text= 'Save', command= salva)
salvar.pack(side=LEFT)
tela.mainloop()