Please Subscribe My YouTube Channel

Wednesday, November 01, 2023

How To Create A Text Editor Such as Notepad with Python

How To Create A Text Editor Such as Notepad with Python

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 = 500

    __thisHeight = 500

    __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", "This is a simple Notepad editor created with Python with Tkinter. This editor can create new file, edit file ,cut,copy and paste features will be available ")


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


notepad = Notepad(width=800,height=500)

notepad.run()

How To Create Animated Login Form(O level)

How To Create Animated Login Form

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Animated Login Form</title>
</head>

<style>
    body {
        height: 100vh;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        gap: 50px;
        font-family: sans-serif;
        overflow: hidden;
        background: linear-gradient(45deg, greenyellow, dodgerblue);
    }

    .card {
        padding: 50px;
        background-color: white;
        border-radius: 10px;
    }

    .card h1 {
        border-left: 7px solid #ffa400;
        padding: 2px 10px;
    }

    .inputbox {
        position: relative;
        height: 50px;
        width: 300px;
        margin-bottom: 50px;

    }

    .inputbox input {
        width: 100%;
        border: 2px solid black;
        padding: 10px;
        border-radius: 10px;
        font-size: 19px;
    }

    .inputbox:last-child {
        width: 50%;
        margin-bottom: 0;
    }

    .inputbox span {
        position: absolute;
        top: 14px;
        left: 20px;
        font-size: 16px;
        transition: 0.6s;
    }

    .inputbox:hover span,
    .inputbox input:focus~span,
    .inputbox input:valid~span {
        transform: translateX(-13px) translateY(-35px);
    }

    .inputbox [type="button"] {
        border: none;
        color: white;
        background-color: #ff00ff;
    }

    .inputbox:hover [type="button"] {
        background: linear-gradient(45deg, greenyellow, dodgerblue,green,red);
    }

    @media only screen and (max-width: 600px) {
        .card {
            padding: 10px;
        }

        .inputbox {
            width: 250px;
        }

        .inputbox input {
            width: 220px;
        }

        .inputbox [type="button"] {
            width: max-content;
            border-radius: 5px;
            padding: 7px 10px;
        }
    }

    .chijl {
        text-decoration: none;
        width: 40vw;
        padding: 15px;
        border-radius: 5px;
        text-align: center;
        font-size: 20px;
        color: #fff;
        background-color: #ff0000;
    }
</style>

<body>

    <div class="card">
        <h1>Login.....</h1>

        <form>

            <div class="inputbox">
                <input type="text" required>
                <span>Email</span>
            </div>

            <div class="inputbox">
                <input type="password" required>
                <span>Password</span>
            </div>

            <div class="inputbox">
                <input type="button" value="Submit">
            </div>

        </form>     


    </div>

    <a href="https://www.youtube.com/channel/UC-R0Dt24rWVEov_kzDmSLDQ" target="_chijl" class="chijl">Subscribe My You Tube Channel</a>

</body>

</html>