Make Notepad using Tkinter (original) (raw)

import tkinter

import os

from tkinter import *

from tkinter.messagebox import *

from tkinter.filedialog import *

class Notepad:

`` __root = Tk()

`` __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 )

`` __thisScrollBar = Scrollbar(__thisTextArea)

`` __file = None

`` def __init__( self , * * kwargs):

`` try :

`` self .__root.wm_iconbitmap( "Notepad.ico" )

`` except :

`` pass

`` try :

`` self .__thisWidth = kwargs[ 'width' ]

`` except KeyError:

`` pass

`` try :

`` self .__thisHeight = kwargs[ 'height' ]

`` except KeyError:

`` pass

`` self .__root.title( "Untitled - Notepad" )

`` screenWidth = self .__root.winfo_screenwidth()

`` screenHeight = self .__root.winfo_screenheight()

`` left = (screenWidth / 2 ) - ( self .__thisWidth / 2 )

`` top = (screenHeight / 2 ) - ( self .__thisHeight / 2 )

`` self .__root.geometry( '%dx%d+%d+%d' % ( self .__thisWidth,

`` self .__thisHeight,

`` left, top))

`` self .__root.grid_rowconfigure( 0 , weight = 1 )

`` self .__root.grid_columnconfigure( 0 , weight = 1 )

`` self .__thisTextArea.grid(sticky = N + E + S + W)

`` self .__thisFileMenu.add_command(label = "New" ,

`` command = self .__newFile)

`` self .__thisFileMenu.add_command(label = "Open" ,

`` command = self .__openFile)

`` self .__thisFileMenu.add_command(label = "Save" ,

`` command = self .__saveFile)

`` self .__thisFileMenu.add_separator()

`` self .__thisFileMenu.add_command(label = "Exit" ,

`` command = self .__quitApplication)

`` self .__thisMenuBar.add_cascade(label = "File" ,

`` menu = self .__thisFileMenu)

`` self .__thisEditMenu.add_command(label = "Cut" ,

`` command = self .__cut)

`` self .__thisEditMenu.add_command(label = "Copy" ,

`` command = self .__copy)

`` self .__thisEditMenu.add_command(label = "Paste" ,

`` command = self .__paste)

`` self .__thisMenuBar.add_cascade(label = "Edit" ,

`` menu = self .__thisEditMenu)

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

`` self .__thisScrollBar.config(command = self .__thisTextArea.yview)

`` self .__thisTextArea.config(yscrollcommand = self .__thisScrollBar. set )

`` def __quitApplication( self ):

`` self .__root.destroy()

`` def __showAbout( self ):

`` showinfo( "Notepad" , "Mrinal Verma" )

`` def __openFile( self ):

`` self .__file = askopenfilename(defaultextension = ".txt" ,

`` filetypes = [( "All Files" , "*.*" ),

`` ( "Text Documents" , "*.txt" )])

`` if self .__file = = "":

`` self .__file = None

`` else :

`` 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 :

`` self .__file = asksaveasfilename(initialfile = 'Untitled.txt' ,

`` defaultextension = ".txt" ,

`` filetypes = [( "All Files" , "*.*" ),

`` ( "Text Documents" , "*.txt" )])

`` if self .__file = = "":

`` self .__file = None

`` else :

`` file = open ( self .__file, "w" )

`` file .write( self .__thisTextArea.get( 1.0 ,END))

`` file .close()

`` 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 ):

`` self .__root.mainloop()

notepad = Notepad(width = 600 ,height = 400 )

notepad.run()