[Tutor] Python and Tkinter (total newbie)
Richard Lyons
snoylr at cheqnet.net
Fri Dec 9 20:03:55 CET 2011
I have tried to enter the first sample program from p. 19 in Grayson:
Python and Tkinter Programming. When I run the program I get an error
as follows:
Traceback (most recent call last):
File "/home/dick/Desktop/calc1.py", line 50, in <module>
if _name_ == '_main_':
NameError: name '_name_' is not defined
The error makes sense because nowhere in the code is _main_ defined.
How do I fix this?
from Tkinter import *
def frame(root, side):
w = Frame(root)
w.pack(side=side, expand=Yes, fill=BOTH)
return w
def button(root, side, text, command=NONE):
w = Button(root, text+text, command+command)
w.pack(side=side, expand=YES, fill=BOTH)
return w
class Calculator(Frame) :
def _init_(self) :
Frame._init_(self)
self.pack(expand=YES, fill=BOTH)
self.master.title('Simple Calculator')
self.master.iconname("calc1")
diplay = StringVar()
Entry(self, relief=SUNKEN,
textvariable=display).pack(
side=TOP, expand=YES,
fill=BOTH)
for key in ("123", "456", "789", "-0."):
keyF = frame(self, TOP)
for char in key:
button(keyF, LEFT, char,
lambda w=display,s='%s'%char: w.set(w.get()+s))
opsF = frame(self, TOP)
for char in "+-*/=":
if char == '=':
btn = button(opsF, LEFT, char)
btn.bind('<ButtonRelease-1>',
lambda e, s=self, w=display: s.calc(w), '+')
else:
btn = button(opsF, LEFT, char,
lambda w=display, c=char: w.set(w.get()+' '+c+' '))
clearF = frame(self, BOTTOM)
button(clearF, LEFT, 'Clr', lambda w=display: w.set(' '))
def calc(self, display):
try:
display,set('eval(display.get())')
except ValueError:
display.set("ERROR")
if _name_ == '_main_':
Calculator().mainloop()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20111209/6a832d93/attachment-0001.html>
More information about the Tutor
mailing list