Make Notepad using Tkinter (original) (raw)
Python provides the Tkinter library to create graphical user interface (GUI) applications. In this article, we will learn how to create a simple Notepad application using Python and Tkinter.
This Notepad will support basic features such as:
- Creating a new file
- Opening an existing file
- Saving a file
- Cut, Copy, and Paste operations
- Help/About menu
Installation
Install Python's standard GUI library "tkinter" using the following pip command:
pip install tkinter
Step-Wise Implementation
1. Import Required Modules
In this step, we import all the necessary modules required for creating the GUI and handling files.
Python `
import tkinter import os from tkinter import * from tkinter.messagebox import * from tkinter.filedialog import *
`
2. Define the Application Structure
Here, we define the main structure of the Notepad application, including the main window, text area, menus, and scrollbar.
In this step, we create the File, Edit, and Help menus and link them with their respective commands.
Python `
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)
`
In this step, we define the functions that perform actions when a menu option is selected.
**Exit Application: This function closes the Notepad window and terminates the application.
Python `
def __quitApplication(self): self.__root.destroy()
`
**Show About Dialog: This function displays basic information about the Notepad application.
Python `
def __showAbout(self): showinfo("Notepad", "Simple Notepad using Python Tkinter")
`
**Open an Existing File: This function opens a text file from the system and displays its content in the text area.
Python `
def __openFile(self): self.__file = askopenfilename(defaultextension=".txt", filetypes=[("All Files","."), ("Text Documents","*.txt")]) if self.__file: self.__root.title(os.path.basename(self.__file) + " - Notepad") self.__thisTextArea.delete(1.0, END) with open(self.__file, "r") as file: self.__thisTextArea.insert(1.0, file.read())
`
**Create a New File: This function clears the text area and prepares the editor for a new file.
Python `
def __newFile(self): self.__root.title("Untitled - Notepad") self.__file = None self.__thisTextArea.delete(1.0, END)
`
**Save the File: This function saves the current content of the text area to a file.
Python `
def __saveFile(self): if self.__file is None: self.__file = asksaveasfilename(defaultextension=".txt", filetypes=[("All Files","."), ("Text Documents","*.txt")]) if self.__file: with open(self.__file, "w") as file: file.write(self.__thisTextArea.get(1.0, END)) self.__root.title(os.path.basename(self.__file) + " - Notepad")
`
**Cut, Copy, and Paste Operations: These functions perform basic text editing operations on the selected text.
Python `
def __cut(self): self.__thisTextArea.event_generate("<>")
def __copy(self): self.__thisTextArea.event_generate("<>")
def __paste(self): self.__thisTextArea.event_generate("<>")
`