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