import tkinter import os	 from tkinter import * from tkinter.messagebox import * from tkinter.filedialog import *  class Notepad:  	__root = Tk()  	# default window width and height 	__thisWidth = 300 	__thisHeight = 300 	__thisTextArea = Text(__root) 	__thisMenuBar = Menu(__root) 	__thisFileMenu = Menu(__thisMenuBar, tearoff=0) 	__thisEditMenu = Menu(__thisMenuBar, tearoff=0) 	__thisHelpMenu = Menu(__thisMenuBar, tearoff=0) 	 	# To add scrollbar 	__thisScrollBar = Scrollbar(__thisTextArea)	 	__file = None  	def __init__(self,**kwargs):  		# Set icon 		try: 				self.__root.wm_iconbitmap("Notepad.ico") 		except: 				pass  		# Set window size (the default is 300x300)  		try: 			self.__thisWidth = kwargs['width'] 		except KeyError: 			pass  		try: 			self.__thisHeight = kwargs['height'] 		except KeyError: 			pass  		# Set the window text 		self.__root.title("Untitled - Notepad")  		# Center the window 		screenWidth = self.__root.winfo_screenwidth() 		screenHeight = self.__root.winfo_screenheight() 	 		# For left-alling 		left = (screenWidth / 2) - (self.__thisWidth / 2) 		 		# For right-allign 		top = (screenHeight / 2) - (self.__thisHeight /2) 		 		# For top and bottom 		self.__root.geometry('%dx%d+%d+%d' % (self.__thisWidth, 											self.__thisHeight, 											left, top))  		# To make the textarea auto resizable 		self.__root.grid_rowconfigure(0, weight=1) 		self.__root.grid_columnconfigure(0, weight=1)  		# Add controls (widget) 		self.__thisTextArea.grid(sticky = N + E + S + W) 		 		# To open new file 		self.__thisFileMenu.add_command(label="New", 										command=self.__newFile)	 		 		# To open a already existing file 		self.__thisFileMenu.add_command(label="Open", 										command=self.__openFile) 		 		# To save current file 		self.__thisFileMenu.add_command(label="Save", 										command=self.__saveFile)	  		# To create a line in the dialog		 		self.__thisFileMenu.add_separator()										 		self.__thisFileMenu.add_command(label="Exit", 										command=self.__quitApplication) 		self.__thisMenuBar.add_cascade(label="File", 									menu=self.__thisFileMenu)	 		 		# To give a feature of cut 		self.__thisEditMenu.add_command(label="Cut", 										command=self.__cut)			 	 		# to give a feature of copy	 		self.__thisEditMenu.add_command(label="Copy", 										command=self.__copy)		 		 		# To give a feature of paste 		self.__thisEditMenu.add_command(label="Paste", 										command=self.__paste)		 		 		# To give a feature of editing 		self.__thisMenuBar.add_cascade(label="Edit", 									menu=self.__thisEditMenu)	 		 		# To create a feature of description of the notepad 		self.__thisHelpMenu.add_command(label="About Notepad", 										command=self.__showAbout) 		self.__thisMenuBar.add_cascade(label="Help", 									menu=self.__thisHelpMenu)  		self.__root.config(menu=self.__thisMenuBar)  		self.__thisScrollBar.pack(side=RIGHT,fill=Y)					 		 		# Scrollbar will adjust automatically according to the content		 		self.__thisScrollBar.config(command=self.__thisTextArea.yview)	 		self.__thisTextArea.config(yscrollcommand=self.__thisScrollBar.set) 	 		 	def __quitApplication(self): 		self.__root.destroy() 		# exit()  	def __showAbout(self): 		showinfo("Notepad","Mrinal Verma")  	def __openFile(self): 		 		self.__file = askopenfilename(defaultextension=".txt", 									filetypes=[("All Files","*.*"), 										("Text Documents","*.txt")])  		if self.__file == "": 			 			# no file to open 			self.__file = None 		else: 			 			# Try to open the file 			# set the window title 			self.__root.title(os.path.basename(self.__file) + " - Notepad") 			self.__thisTextArea.delete(1.0,END)  			file = open(self.__file,"r")  			self.__thisTextArea.insert(1.0,file.read())  			file.close()  		 	def __newFile(self): 		self.__root.title("Untitled - Notepad") 		self.__file = None 		self.__thisTextArea.delete(1.0,END)  	def __saveFile(self):  		if self.__file == None: 			# Save as new file 			self.__file = asksaveasfilename(initialfile='Untitled.txt', 											defaultextension=".txt", 											filetypes=[("All Files","*.*"), 												("Text Documents","*.txt")])  			if self.__file == "": 				self.__file = None 			else: 				 				# Try to save the file 				file = open(self.__file,"w") 				file.write(self.__thisTextArea.get(1.0,END)) 				file.close() 				 				# Change the window title 				self.__root.title(os.path.basename(self.__file) + " - Notepad") 				 			 		else: 			file = open(self.__file,"w") 			file.write(self.__thisTextArea.get(1.0,END)) 			file.close()  	def __cut(self): 		self.__thisTextArea.event_generate("<<Cut>>")  	def __copy(self): 		self.__thisTextArea.event_generate("<<Copy>>")  	def __paste(self): 		self.__thisTextArea.event_generate("<<Paste>>")  	def run(self):  		# Run main application 		self.__root.mainloop()     # Run main application notepad = Notepad(width=600,height=400) notepad.run() 

Read more of this post