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()