DEV Community

Azlan-Syed
Azlan-Syed

Posted on

2 2

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

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (5)

Collapse
 
andypiper profile image
Andy Piper

Have you thought about sharing your code using GitHub?

Collapse
 
azlan_syed profile image
Azlan-Syed

github.com/azlan-syed

here is all that stuff i have

Collapse
 
azlan_syed profile image
Azlan-Syed

yes

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

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

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay