NotePad - My 1st Project
from tkinter import *
from tkinter.messagebox import showinfo
from tkinter.filedialog import askopenfilename, asksaveasfilename
import os
def newfile():
global file
note_root.title("Untitled - NotePad")
file = None
TextArea.delete(1.0, END)
def openfile():
global file
file = askopenfilename(defaultextension=".txt", filetypes=[("All Files", "*.*"), ("Text Documents", "*.txt")])
if file == "":
file = None
else:
note_root.title(os.path.basename(file) + " - Notepad")
TextArea.delete(1.0, END)
f = open(file, "r")
TextArea.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 a new file
f = open(file, "w")
f.write(TextArea.get(1.0, END))
f.close()
note_root.title(os.path.basename(file) + " - NotePad")
print("File Saved")
else:
# Save the file
f = open(file, "w")
f.write(TextArea.get(1.0, END))
f.close()
def quitapp():
note_root.destroy()
def cut():
TextArea.event_generate("<<Cut>>")
def copy():
TextArea.event_generate("<<Copy>>")
def paste():
TextArea.event_generate("<<Paste>>")
def about():
showinfo("NotePad", "NotePad by Code with Suman")
if __name__ == '__main__':
# Basic tkinter setup
note_root = Tk()
note_root.title("Untitled - Notepad")
note_root.wm_iconbitmap("icon.ico")
note_root.geometry("600x500")
# Add TextArea
TextArea = Text(note_root, font="lucida 13")
file = None
TextArea.pack(expand=True, fill=BOTH, padx=5, pady=5)
#Craet a Menu Bar
MenuBar = Menu(note_root)
# File Menu Start
FileMenu = Menu(MenuBar, tearoff=0)
# To Open New File
FileMenu.add_command(label="New", command=newfile)
# To Open Already 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 End
# Edit Menu Start
EditMenu = Menu(MenuBar, tearoff=0)
# To give a feature of cut, copy & 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 End
# Help Menu Start
HelpMenu = Menu(MenuBar, tearoff=0)
HelpMenu.add_command(label="About Notepad", command=about)
MenuBar.add_cascade(label="Help", menu=HelpMenu)
# Help Menu End
note_root.config(menu=MenuBar)
# Add ScrollBar
# Right
ScrollRight = Scrollbar(TextArea)
ScrollRight.pack(side=RIGHT, fill=BOTH)
ScrollRight.config(command=TextArea.yview)
TextArea.config(yscrollcommand=ScrollRight.set)
note_root.mainloop()
Comments
Post a Comment