Create a Simple Python Text Editor!

Introduction: Create a Simple Python Text Editor!

In this Instructable I will be teaching you how to create a simple text editor with Python and the module Tkinter.

To do this tutorial you need some basic knowledge of Python.

First create a python file called texteditor.py or something like that. Then open it with a text editor like Atom or Notepad ++.

Step 1: Making a Window

To make a text editor we need a window. Type in the file:

import sys
v=sys.python_version
if "2.7" in v:
from Tkinter import *
elif "3.3" in v or "3.4" in v:
from tkinter import *
root=Tk("Text Editor")
root.mainloop()

Then if you are on a mac go Cmd+Shift - search and open "terminal" - then type

python /pathto/texteditor.py 

and hit enter.

If you are on a windows, search and open Command prompt, type

python /pathto/texteditor.py

and hit enter. You should se a screen that looks like the picture above.

Congrats!

Step 2: Add a Text Widget

Now we need to add something to type in.

Underneath root=Tk() add two lines like this:

text=Text(root)
text.grid()

Then run the file again like in step one. You should get a bigger screen with a text box in it when you click on it. It will look like the picture above.

Your full code will look like this now:

import sys
v=sys.version()
if "2.7" in v: 
    from Tkinter import * 
elif "3.3" in v or "3.4" in v:
    from tkinter import * 
root=Tk("Text Editor")
text=Text(root)
text.grid()
root.mainloop()

Step 3: Saving Your Text

You need to be able to save your text of course, so we will add a button to save.

Under import Tkinter add

import tkFileDialog

and under import tkinter add

import tkinter.tkFileDialog

Under the last line you added write this:

def saveas():
    global text  
    t = text.get("1.0", "end-1c")
    savelocation=tkFileDialog.asksaveasfilename()
    file1=open(savelocation, "w+")
    file1.write(t)
    file1.close()
button=Button(root, text="Save", command=saveas) 
button.grid()

Clicking on the button will save your file.

The full code:

import sys
v=sys.version()
if "2.7" in v:
    from Tkinter import * 
    import tkFileDialog
elif "3.3" in v or "3.4" in v: 
    from tkinter import *
    import tkinter.tkFileDialog
root=Tk("Text Editor")

text=Text(root)
text.grid()
def saveas():
    global text
    t = text.get("1.0", "end-1c")
    savelocation=tkFileDialog.asksaveasfilename()
    file1=open(savelocation, "w+")
    file1.write(t)
    file1.close()
button=Button(root, text="Save", command=saveas)
button.grid() 
root.mainloop()

Step 4: Font Changer

Under the last line you added, add this:

def FontHelvetica():

global text
    text.config(font="Helvetica")
def FontCourier():
    global text
    text.config(font="Courier")
font=Menubutton(root, text="Font") 
font.grid() 
font.menu=Menu(font, tearoff=0) 
font["menu"]=font.menu
helvetica=IntVar() 
courier=IntVar()
font.menu.add_checkbutton(label="Courier", variable=courier,
command=FontCourier)
font.menu.add_checkbutton(label="Helvetica", variable=helvetica,
command=FontHelvetica)

Congratulations! You have finished a very simple text editor. If you want more tutorials like this tell me what here.

Run the file to use it!

Full Code:

import sys

v=sys.version()
if "2.7" in v:
    from Tkinter import * 
    import tkFileDialog
elif "3.3" in v or "3.4" in v:
    from tkinter import *
    import tkinter.tkFileDialog
root=Tk("Text Editor")
text=Text(root)
text.grid() 
def saveas():

global text

t = text.get("1.0", "end-1c")

savelocation=tkFileDialog.asksaveasfilename()

file1=open(savelocation, "w+")

file1.write(t)

file1.close()
button=Button(root, text="Save", command=saveas) 
button.grid()
def FontHelvetica():

global text

text.config(font="Helvetica")
def FontCourier():

global text

text.config(font="Courier")
font=Menubutton(root, text="Font") 
font.grid() 
font.menu=Menu(font, tearoff=0) 
font["menu"]=font.menu
Helvetica=IntVar() 
arial=IntVar() 
times=IntVar() 
Courier=IntVar()
font.menu.add_checkbutton(label="Courier", variable=Courier, 
command=FontCourier)
font.menu.add_checkbutton(label="Helvetica", variable=helvetica,
command=FontHelvetica)
root.mainloop()

Be the First to Share

    Recommendations

    • Battery Powered Contest

      Battery Powered Contest
    • Plywood Challenge

      Plywood Challenge
    • Plastic Contest

      Plastic Contest

    22 Discussions

    0
    samuelopemipo006
    samuelopemipo006

    16 days ago

    It keeps telling me
    Name error: TK is not defined

    0
    jesteraexy
    jesteraexy

    8 months ago

    Where is it thé syntax color ??

    0
    aaronliu0130
    aaronliu0130

    Question 1 year ago

    Great!
    But one more thing:
    How do you show all the fonts in the system?

    0
    aruba246
    aruba246

    Question 2 years ago on Step 2

    What does this error mean?? And,how do i overcome it?

    str.png
    0
    aaronliu0130
    aaronliu0130

    Answer 1 year ago

    Just remove the brackets. The author of this instructable forgot that "sys.version" is a string, not a callable.

    0
    Ineedaname87
    Ineedaname87

    2 years ago

    When I run that command in the terminal at the start to make the window, it comes up with this. python: can't open file ' /pathto/texteditor.py': [Errno 2] No such file or directory.

    PLS HELP! I am running this on windows 7. I have installed Python 3.6.5 and I'm using the Atom text editor.

    0
    aaronliu0130
    aaronliu0130

    Reply 1 year ago

    ...Really? YOU ACTUALLY ENTERED "/pathto/"? You're supposed to enter the path to your python file!

    0
    Ben4jammin2
    Ben4jammin2

    1 year ago

    Great tut. I just wanted to comment that yes I would like very much to see more of these. And for a question, I am interested in offering the collapsibility feature to such a text editor.

    0
    KonstantinosA16
    KonstantinosA16

    1 year ago

    That was really helpful. Just one thing. Is there a way to change the fonts just for the text you are going to insert and not the one that already exists?

    0
    vungtau
    vungtau

    Question 2 years ago on Introduction

    how could I type in vietnamese inside the editor, your instruction for the editor is working very well with Python 2.7. Thanks much for giving us the very good code for the Editor.
    Thanks.

    0
    Dimlu
    Dimlu

    2 years ago

    This whole thing is broken for python 3. I will say, this is a great learning tool for an intro into this. Here's what I got:

    import os

    from tkinter import *

    import tkinter.filedialog

    from tkinter.filedialog import askopenfilename

    root=Tk("Text Editor")

    text=Text(root)

    text.grid()

    def saveas():

    global text

    t = text.get("1.0", "end-1c")

    savelocation=tkFileDialog.asksaveasfilename()

    file1=open(savelocation, "w+")

    file1.write(t)

    file1.close()

    button=Button(root, text="Save", command=saveas)

    button.grid()

    def FontHelvetica():

    global text

    text.config(font="Helvetica")

    def FontCourier():

    global text

    text.config(font="Courier")

    font=Menubutton(root, text="Font")

    font.grid()

    font.menu=Menu(font, tearoff=0)

    font["menu"]=font.menu

    Helvetica=IntVar()

    arial=IntVar()

    times=IntVar()

    Courier=IntVar()

    font.menu.add_checkbutton(label="Courier", variable=Courier,

    command=FontCourier)

    font.menu.add_checkbutton(label="Helvetica", variable=Helvetica,

    command=FontHelvetica)

    root.mainloop()

    0
    MasonK22
    MasonK22

    Reply 2 years ago

    This code works for python 3 with absolutely no problem.

    0
    MasonK22
    MasonK22

    2 years ago

    There are some bugs, I am in python 3.
    The first thing is that line 4,
    v=sys.version()
    sys.version is an string and not a function that will return a string
    also the command to run the program and make the window is for mac only.
    I hope this answered all these questions.
    If my answers don't make sense I'm sorry I'm an newbie to tkinter

    0
    akhildabraal
    akhildabraal

    Question 2 years ago on Step 2

    Hi Sir/Mam,

    I was checking out your code can you tell me how can I add a check box in front of the text box as I am planning to make it as a ToDo List Application.

    0
    mcovic
    mcovic

    3 years ago

    Can you make a tutorial that teaches how to add syntax highlighting? (For IDE's)

    0
    AdityaG110
    AdityaG110

    3 years ago

    wow interesting

    0
    CarsenE
    CarsenE

    4 years ago

    Why does mine say "error in line 4" "v = sys.version()" "'str' Object not callable"

    0
    krowley1
    krowley1

    Reply 3 years ago

    Because sys.version is a property and not a method. It should read:

    v=sys.version

    without the (). Possibly the author was thinking of platform.python_version() which is a method that prints the same information (if you include platform).

    This is a nice little tutorial, but that error should be corrected...

    0
    krowley1
    krowley1

    Reply 3 years ago

    Also, font.menu.add_checkbutton for Helvetica has the variable name in lower case (variable=helvetica), but this gives an error as the font name was earlier defined and should start with a cap:

    variable=Helvetica

    or, you could change the definition to: helvetica=IntVar()

    fix those two errors (sys.version and Helvetica) and it should run.

    1
    PumpkinSmasher
    PumpkinSmasher

    Reply 3 years ago

    thanks, sorry been completely inactive for a year and this was written when I was still learning myself. Will fix now.