Notepad Source Code



from tkinter import *
from tkinter import messagebox as tmsg
from tkinter.filedialog import askopenfilename,asksaveasfilename
import os 
if __name__=='__main__':

    def newfile():
        global file
        root.title("Untitled - Notepad")
        file = None
        text_area.delete(1.0,END)
    def openfile():
        global file
        file = askopenfilename(defaultextension=".txt", filetypes=[("All Files","*.*"),("Text Documents","*.txt")])
        if file == "":
            file = None
        else:
            root.title(os.path.basename(file) + "-Notepad")
            text_area.delete(1.0,END)
            f= open(file,"r")
            text_area.insert(1.0,f.read())
            f.close()
    def savefile():
        global file
        if file == None:
            file = asksaveasfilename(initialfile='Untitled.txt',defaultextension=".txt", filetypes=[("All Files","*.*"),("Text Documents","*.txt")])
            if file == "":
                file = None
            else:
                # Save as the new file
                f = open(file,"w")
                f.write(text_area.get(1.0,END))
                f.close()
                root.title(os.path.basename(file) + "-Notepad")
        else:
            #Save the file
            f = open(file,"w")
            f.write(text_area.get(1.0,END))
            f.close()

    def quitApp():
        global file
        response = tmsg.askyesnocancel("Save", "Do you want to save the changes before exiting?")
        if response:  # Yes
            if file:
                with open(file, "w") as f:
                    f.write(text_area.get(1.0, END))
            else:
                file = asksaveasfilename(defaultextension=".txt",
                                        filetypes=[("Text Documents", "*.txt"), ("All Files", "*.*")])
                if file:
                    with open(file, "w") as f:
                        f.write(text_area.get(1.0, END))
            root.destroy()
        elif response is False:  # No
            root.destroy()
        # If Cancel: do nothing
    def cut():
        text_area.event_generate(("<>"))
    def copy():
        text_area.event_generate(("<>"))
    def paste():
        text_area.event_generate(("<>"))
    def about():
        tmsg.showinfo("About Notepad","This is a notepad created by Kush Kumar")
    def ask():
        pass


    root = Tk()
    root.protocol("WM_DELETE_WINDOW", quitApp)

    root.title("Untitled - Notepad")
    root.geometry("700x500")
    # adding scroll bar
    scrollbar = Scrollbar(root)
    scrollbar.pack(side=RIGHT,fill=Y)

    # Text Area
    text_area = Text(root,font="Times 12 ",yscrollcommand= scrollbar.set)
    text_area.pack(expand=True,fill="both")
    file = None
    scrollbar.config(command=text_area.yview)
    # Lets create the Menu bar
    MenuBar = Menu(root)
    # File Menu Starts
    FileMenu = Menu(MenuBar,tearoff=0)
    # To open new file
    FileMenu.add_command(label="New File",command=newfile)
    # To open the existing file
    FileMenu.add_command(label="Open",command=openfile)
    # To save the current file
    FileMenu.add_command(label="Save", command=savefile)
    FileMenu.add_separator()
    FileMenu.add_command(label="Exit", command= quitApp)
    MenuBar.add_cascade(label="File",menu=FileMenu)
    # File Menu Ends

    # Edit Menu starts
    EditMenu =Menu(MenuBar,tearoff=0)
    # To give a feature of cut , copy and paste
    EditMenu.add_command(label="Cut",command=cut)
    EditMenu.add_command(label="Copy",command=copy)
    EditMenu.add_command(label="Paste",command=paste)

    MenuBar.add_cascade(label="Edit",menu=EditMenu)
    # Edit Menu Ends

    # Help menu starts
    Helpmenu = Menu(MenuBar,tearoff=0)
    Helpmenu.add_command(label="About Notepad",command=about)
    Helpmenu.add_command(label="ask",command=ask)
    MenuBar.add_cascade(label="Help",menu=Helpmenu)
    root.config(menu=MenuBar)


    root.mainloop()