Is there good way to save text input from tkinter Text widget Is there good way to save text input from tkinter Text widget tkinter tkinter

Is there good way to save text input from tkinter Text widget


I think that the problem is that the "Text" is formatted well only using the Tkfixedfont font.

I made some changes, replaced the format type, deleted the bold and size and used the format() function to align the text.

from tkinter import *from tkinter.filedialog import asksaveasfilenamefrom tkinter.messagebox import askyesno# ------------app = Tk()# =================== frames ========================frame1 = Frame(app)frame1.pack(side=TOP)# ----title_label = Label(frame1, text="Facture", font=("courier", 40, 'bold'))title_label.pack()# ----frame2 = Frame(app, bd=5)frame2.pack(side=TOP)# ----frame3 = Frame(app)frame3.pack(side=TOP)# ============================================# ======--- text field -----======text_input = Text(frame2,bg="aliceblue", fg='black', font=('TkFixedFont'))text_input.pack(expand = True)# ============ in text field ===============header = "{0} {1} {2}\n".format("-"*35,"Facture", "-"*35)text_input.insert(END, header)fields = "{0:10}{1:40}{2:20}{3:8}\n".format("Qty", "Product", "PU", "PV/TVAC")text_input.insert(END, fields)rs = (("1", "FANTA CITRON", "2500", "2500"),        ("1", "BUFFET PER HEAD", "10000", "10000"),        ("1", "MUKEKE GRILLE OIGNONS", "16000", "16000"),)for i in rs:    fields = "{0:10}{1:40}{2:20}{3:10}\n".format(i[0], i[1], i[2], i[3])    text_input.insert(END, fields)    footer = "{0:70}{1}".format("TOTAL","28500")text_input.insert(END, footer)# --------- functions ---------def save():    filepath = asksaveasfilename(        defaultextension = "csv",        filetypes = [("Text Files", "*.csv"), ("All Files", "*.*")])    if not filepath:        return    with open(filepath, 'w') as output_file:        text = text_input.get('1.0', END)        output_file.write(text)def printR():    passdef delete():    text_input.delete('1.0', END)def exit():    iExit = askyesno("Attention", "You are on your way to quit\nAre you sure you want quit")    if iExit > 0:        app.destroy()# ----------------------------------# ============---------------===============# =====--------- Buttons -----------========save_button = Button(frame3, text="Save", height=3, width=10, command=save)save_button.grid(row=0, column=0, padx=2)# ----------------print_button = Button(frame3, text="Print", height=3, width=10, command=printR)print_button.grid(row=0, column=1, padx=2)# ----------------delete_button = Button(frame3, text="Delete", height=3, width=10, command=delete)delete_button.grid(row=0, column=2, padx=2)# ----------------quit_button = Button(frame3, text="Exit", height=3, width=10, command=exit)quit_button.grid(row=0, column=3, padx=2)# ============================================app.mainloop()  

enter image description here

enter image description here