DEV Community

Azlan-Syed
Azlan-Syed

Posted on

notepad by tkinter

Hello everyone i made a python gui calculator with tkinter here is the code try it and comment how was it (probably basic)

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

    def __showAbout(self):
        showinfo("Notepad","Notepad By Azlan Syed")

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


                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()
`
Enter fullscreen mode Exit fullscreen mode

Oldest comments (5)

Collapse
 
azlan_syed profile image
Azlan-Syed

also try editing the code if any mistakes cause sometimes pasting the code causes errors

Collapse
 
andypiper profile image
Andy Piper

Have you thought about sharing your code using GitHub?

Collapse
 
azlan_syed profile image
Azlan-Syed

you can see my github profile i have all that stuff

Collapse
 
azlan_syed profile image
Azlan-Syed

yes

Collapse
 
azlan_syed profile image
Azlan-Syed

github.com/azlan-syed

here is all that stuff i have