×

Make Notepad using Tkinter in Python

Tkinter:

The standard Python technique for building Graphical User Interfaces (GUIs) is Tkinter, which is included in all popular Python distributions. The only framework included in the Python standard library is this one. On top of Tk, this Python framework serves as a thin object-oriented layer that provides access to the Tk toolkit. The Tk toolkit is a cross-platform set of "graphical control elements," also called widgets, used to build application interfaces. This framework gives Python users a quick and easy way to build GUI elements with the Tk toolkit's widgets. In a Python application, Tk widgets can create buttons, menus, data fields, etc. Once created, these graphic elements can be connected to or work with other widgets, features, functionality, processes, or data.

Syntax:

from tkinter import *
from tkinter import ttk

Advantages of Tkinter:

This promotes flexibility in handling GUI incidents, which makes the code base run more smoothly. Qt is more than just a framework; it uses a variety of native platform APIs for networking, database development, and other uses. Through a unique API, it gives them direct access.

Disadvantages of Tkinter:

Tkinter doesn't have any advanced widgets. There isn't a tool like Qt Designer for Tkinter in it. Its user interface is unreliable. Tkinter can be challenging to debug at times. It's not entirely in Python.

CODE:

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


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


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

CODE EXPLANATION:

Importing the models named tkinter, os and from tkinter importimg messagebox, feildialog. After importing the modules, we go for the the commands adding labels to the user interface with are “New”, “Open”, “Save’, “Exit”, “File”, “Cut”, “Copy”, “Paste”, “Edit”, “About Notepad”. Each and every label has its own backend program lines to get executed and the final interface is shown with a self root.mainloop().

OUTPUT:

Make Notepad using Tkinter in Python

Related Topics

How to run Python code from the command prompt

The Windows operating system's command-line interpreter is CMD or Command Prompt. The "MS-DOS Prompt" is comparable to Command.com, used in DOS and Windows 9x computers. It is similar to Unix...

3 minutes read.

How to print in same line in python

How to Print in the Same Line in Python To print in Python, we use the print () function and the syntax of print () goes like this: print (values, sep =...

3 minutes read.

Python oct() function

Python oct() function The oct() function in Python converts an integer number to an octal string prefixed with “0o”. Syntax oct(x) Parameter x: This parameter represents an Integer Number Return This function returns an octal string. Example 1 #...

1 minute read.

Create Table Using PyQt5 in Python

PyQt5: PyQt5 is one of several solutions that Python offers for creating GUI applications. Cross-platform GUI toolkit PyQt5 is a collection of Python interfaces for Qt version 5. With this library's...

4 minutes read.

What is Ipython shell?

IPython is a command shell for computing in multiple programming languages. IPython was developed for python language by Fernando Perez in 2001 as a well-equipped python interpreter that offers shell...

3 minutes read.

ComboBox in Python

Python includes several graphical user interface (GUI) libraries, including PyQT, Tkinter, Kivy, WxPython, and PySide. Tkinter is the most commonly used GUI module in Python because it is simple and...

2 minutes read.

Python program to find the area of a circle

Python program to find the area of a circle This article will discuss how to find the area of a circle in Python with a given radius. The area of a...

2 minutes read.

Anonymous/Lambda Function in Python

Lambda keyword is used to declare an Anonymous function, i.e. a function that does not have any name. It is also called Anonymous functions. In python, normal functions are defined...

3 minutes read.

How To Compare Two Strings In Python

In this article, we will discuss how to compare two strings in Python. So, before that, let’s have a quick revision on “What are strings?” Strings are a sequence of characters that...

5 minutes read.

Creating Web Application in python

Web Application :  Web Application is an application software that runs in web browser . Software programs will run on operating system. Whereas Web Applications will run on World Wide Web...

5 minutes read.

Python bytearray()

Python bytearray() Class The bytearray() class is used to return a bytearray object which is an array of the specified bytes. It gives a mutable sequence of integers in the range 0...

1 minute read.

Python Sys Stdout

Python Programming Language: Python programming language is one of the most used programming languages, as it is used widely in the field of software and data analysis, web development, etc. It...

3 minutes read.

Python ascii() Function

Python ascii() Function The ascii() function returns a readable version of any object (Strings, Tuples, Lists, etc). This function will replace any non-ascii characters with escape characters. Syntax ascii(object) Parameter object:  An object, like String, List, Tuple, Dictionary, etc. Return This...

1 minute read.

Type casting in Python

Introduction Type Casting is defined as the method of converting the variables/values data type into a certain data type for matching the operation needed to be performed by the users. This...

4 minutes read.

How to read data from com port in python

Comport, the I/O interface is known as a COM port that allows the connection for a serial device to a computer. COM ports are sometimes referred to as serial ports....

3 minutes read.

Python ord() Function

Python ord() Function The ord() function in Python returns the number representing the Unicode code of a specified character. Syntax ord(c) Parameter c: This parameter represents a string or any character. Return This function returns the number...

1 minute read.

Python Set union() method

Python Set union() method The set.union() method in Python returns a set that contains all items from the original set and all items from the specified sets. Syntax set.union(set1, set2...) Parameter set1- This parameter represents the first set...

2 minutes read.

Python Logging Maxbytes

Python: Python is an interactive and more accessible language than any other programming language. The python programming language uses a variety of libraries to perform the operations in a faster way....

6 minutes read.

Python program to convert Celsius into Fahrenheit

Python program to convert Celsius into Fahrenheit This program explains how we can take the temperature in Celsius and convert them into Fahrenheit. Celsius Celsius, also known as centigrade, is a measurement unit...

1 minute read.

What is Collaborative Filtering in ML, Python

Introduction Contents recommendation is a useful tactic for almost any specific technology looking to increase interest, but it frequently calls for a lot of user data and perhaps laborious content tagging...

3 minutes read.