On Tue, Apr 1, 2014 at 6:07 PM, Patti Scott <pscott...@yahoo.com> wrote: > I've been cheating: comment out the conditional statement and adjust the > indents. But, how do I make my program run with if __name__ == 'main': > main() at the end? I thought I understood the idea to run a module called > directly but not a module imported. My program isn't running, though.
The statement is: if __name__ == '__main__': You’re missing the double underscores on both sides of __main__. If you added them in, this would work. > Below is the last textbook example (Python Programming, Zelle) I reworked. > Runs when I comment out the conditional statement. I am self-studying. > Python 2.7.3, Notepad++, Windows PowerShell. > > # calc.pyw > # a 4-function calculator that uses Python arithmetic > # illustrates use of objects and lists to build a simple GUI > > from graphics import * > from button import Button > > class Calculator: It’s better to inherit from object (i.e. use `class Calculator(object):`) in this case. Saves you a lot of trouble when you encounter new-style-only things. > # this class implements simple calculator GUI > > def __init__(self): > # create window for calculator > win = GraphWin('calculator') > win.setCoords(0,0,6,7) > win.setBackground('slategray') > self.win = win > # now create the widgets > self.__createButtons() > self.__createDisplay() > > def __createButtons(self): > # create list of buttons > # start with all the standard-sized buttons > # bSpecs gives center coords and labels of buttons > bSpecs = [(2,1,'0'), (3,1,'.'), > (1,2,'1'), (2,2,'2'), (3,2,'3'), (4,2,'+'), (5,2,'-'), > (1,3,'4'), (2,3,'5'), (3,3,'6'), (4,3,'*'), (5,3,'/'), > (1,4,'7'), (2,4,'8'), (3,4,'9'), (4,4,'<-'), (5,4,'C')] > self.buttons = [] > for (cx,cy, label) in bSpecs: > self.buttons.append(Button(self.win, Point(cx,cy), .75,.75, > label)) > # create the larger equals button > self.buttons.append(Button(self.win, Point(4.5,1), 1.75, .75, '=')) > # activate all buttons > for b in self.buttons: > b.activate() > > def __createDisplay(self): > bg = Rectangle(Point(.5,5.5), Point(5.5, 6.5)) > bg.setFill('white') > bg.draw(self.win) > text = Text(Point(3,6), "") > text.setFace('courier') > text.setStyle('bold') > text.setSize(16) > text.draw(self.win) > self.display = text > > def getButton(self): > # waits for button to be clicked and returns label of that button > while True: > p = self.win.getMouse() > for b in self.buttons: > if b.clicked(p): > return b.getLabel() # method exit > > def processButton(self, key): > # updates calculator display for press of this key > text = self.display.getText() > if key == 'C': > self.display.setText("") > elif key == "<-": > # backspace, slice off the last character > self.display.setText(text[:-1]) > elif key == '=': > # evaluate the expression and display result > # the try ... except mechanism catches errors in the > # formula being evaluated > try: > result = eval(text) > except: > result ='ERROR' > self.display.setText(str(result)) > else: > # normal key press, append it to end of display > self.display.setText(text+key) > > def run(self): > # infinite event loop to process button clicks > while True: > key = self.getButton() > self.processButton(key) > > #this runs the program > if __name__ == 'main': > #first create a calulator object > theCalc = Calculator() > # now call the calculator's run methond > theCalc.run() > > > > and I get > > PS C:\Users\Owner\Py Programs> python calc.py > PS C:\Users\Owner\Py Programs> > > > > Thanks > > > > > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor > -- Chris “Kwpolska” Warrick <http://kwpolska.tk> PGP: 5EAAEA16 stop html mail | always bottom-post | only UTF-8 makes sense _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor