I am a beginner in python and am trying to make a code which translates text to morse code, in a tkinter application
I get this error message
Code: Select all
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1437, in __call__
return self.func(*args)
File "morsecode.py", line 17, in translate
loop()
File "morsecode.py", line 242, in loop
length = len(phrase)
NameError: global name 'phrase' is not defined
Sorry my code is very long but almost all of it repeats itself
Code: Select all
import time
import RPi.GPIO as GPIO
from Tkinter import *
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.output(11, False)
root = Tk()
root.wm_title('Morse Code Translator')
def translate():
raw = text.get()
print raw
phrase = raw.lower()
loop()
frame = Frame(root, width=100, height=100)
frame.pack()
write = Label(frame, text='write text below:')
write.pack()
text = Entry(frame)
text.pack()
text.delete(0, END)
button = Button(frame, text='translate', fg='red', command=translate)
button.pack()
def a():
print 'a'
dot()
dash()
pause()
def b():
print 'b'
dash()
dot()
dot()
dot()
pause()
def c():
print 'c'
dash()
dot()
dash()
dot()
pause()
def d():
print 'd'
dash()
dot()
dot()
pause()
def e():
print 'e'
dot()
pause()
def f():
print 'f'
dot()
dot()
dash()
dot()
pause()
def g():
print 'g'
dash()
dash()
dot()
pause()
def h():
print 'h'
dot()
dot()
dot()
dot()
pause()
def i():
print 'i'
dot()
dot()
pause()
def j():
print 'j'
dot()
dash()
dash()
dash()
pause()
def k():
print 'k'
dash()
dot()
dash()
pause()
def l():
print 'l'
dot()
dash()
dot()
dot()
pause()
def m():
print 'm'
dash()
dash()
pause()
def n():
print 'n'
dash()
dot()
pause()
def o():
print 'o'
dash()
dash()
dash()
pause()
def p():
print 'p'
dot()
dash()
dash()
dot()
pause()
def q():
print 'q'
dash()
dash()
dot()
dash()
pause()
def r():
print 'r'
dot()
dash()
dot()
pause()
def s():
print 's'
dot()
dot()
dot()
pause()
def t():
print 't'
dash()
pause()
def u():
print 'u'
dot()
dot()
dash()
pause()
def v():
print 'v'
dot()
dot()
dot()
dash()
pause()
def w():
print 'w'
dot()
dash()
dash()
pause()
def x():
print 'x'
dot()
dash()
pause()
def y():
print 'y'
dash()
dot()
dash()
dash()
pause()
def z():
print 'z'
dash()
dash()
dot()
dot()
pause()
def pause():
time.sleep(1)
def space():
print 'space'
time.sleep(3.0)
def dash():
print 'dash'
GPIO.output(11, True)
time.sleep(1.5)
GPIO.output(11, False)
time.sleep(0.5)
def dot():
print 'dot'
GPIO.output(11, True)
time.sleep(0.5)
GPIO.output(11, False)
time.sleep(0.5)
def loop():
number = 0
length = len(phrase)
while number < length:
words = phrase[number]
number += 1
if words == 'a':
a()
elif words == 'b'
b()
elif words == 'c':
c()
elif words == 'd':
d()
elif words == 'e':
e()
elif words == 'f':
f()
elif words == 'g':
g()
elif words == 'h':
h()
elif words == 'i':
i()
elif words == 'j':
j()
elif words == 'k':
k()
elif words == 'l':
l()
elif words == 'm':
m()
elif words == 'n':
n()
elif words == 'o':
o()
elif words == 'p':
p()
elif words == 'q':
q()
elif words == 'r':
r()
elif words == 's':
s()
elif words == 't':
t()
elif words == 'u':
u()
elif words == 'v':
v()
elif words == 'w':
v()
elif words == 'x':
x()
elif words == 'y':
y()
elif words == 'z':
z()
elif words == ' ':
space()
else:
print 'error'
root.mainloop()
Olly