notepad application

notepad app using python – python project

notepad using python

hey, what is up to people, in this post I gonna share with you a notepad app project with complete source code with complete resources. Using this project you will get some ideas and level up your python learning skills or you can add this python project to your resume or portfolio.

Before sharing the code make sure you have installed the required modules.

tkinter – For creating user interface(UI) of notepad application
os – os (operating system ) is used to perform task-related os. In this project, it is used to save and open a text file.

Library Installation

Before getting started with code we need to install the necessary required module or library. By default random and sys come preinstalled in python. we need to install tkinter. For that, you need to write the following command in your terminal or command prompt.

If you having an issue or getting errors on installing libraries do checkout this article where I have explained how to properly install python and fix errors regarding pip, Make Super Mario Game using Python.

pip install tk

once the tkinter has been installed you are good to go.

Code

The following below code is the complete code of the notebook app using python. this code is written in python classes and object concepts. learn python class and object click here it will help you to understand this code in better way

import tkinter 
import os	 
from tkinter import *
from tkinter.messagebox import *
from tkinter.filedialog import *
 

In this block of code, I have imported all the required python packages to build our notepad app with python.

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

Now I have created a class called Notepad under which I will call the functions for building our notepad app. after creating the class I have initialised the root of Tkinter and also describe the width , width, and other properties of our root window.

   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) 

In this part of code, I have initialized the properties and set icons beside all of these in this code we gave defined various things like resizeable text windows and features like copy, paste, editing, and adding descriptions, etc.

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

This part of code is used to define the function like quitting application or opening and saving the text file and also defined what to do when a file is saved or using the features like cut, copy, and pastes. and in we have given the command to run the app main loop.

See also  Countdown timer | Python project 

Copy The code correctly Make Sure that you havent make any indenation or syntax error.

And don’t forget to checkout
Build You own personal assistant like jarvis using python , Best YouTube Channels For Coding.

Leave a Comment

Your email address will not be published. Required fields are marked *

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

we provide projects, courses, and other stuff for free. in order for running we use Google ads to make revenue. please disable adblocker to support us.