Thanks for the reply Alan. I'm unfamiliar on both methods you suggested. Can you give me examples with code of them? I saw this piece of code on your webpage:
import msvcrt def doKeyEvent(key): if key == '\x00' or key == '\xe0': # non ASCII key = msvcrt.getch() # fetch second character print ord(key), def doQuitEvent(key): raise SystemExit # First, clear the screen of clutter then warn the user # of what to do to quit lines = 25 # set to number of lines in console for line in range(lines): print print "Hit space to end..." print # Now mainloop runs "forever" while True: ky = msvcrt.getch() length = len(ky) if length != 0: # send events to event handling functions if ky == " ": # check for quit event doQuitEvent(ky) else: doKeyEvent(ky) Is this similar to the try except clause method? How will breaking code into timed events help me? I wanted to stop the function on an event (like pushing a button). The part I don't really understand is how the program can be screening or "recognizing" a command or event while it hasn't finished this other process. How does the timer help in this? From my experiences with python, python doesn't let anything get in its way until its done with the current process unless you end it immediately with ctrl c or pressing X. It won't even let you type text into the console while it's "in process." On Mon, Jun 8, 2009 at 4:23 AM, Alan Gauld <alan.ga...@btinternet.com>wrote: > "xbmuncher" <xboxmunc...@gmail.com> wrote > > def longLoop(): >> x = 0 >> for n in range(100000): >> time.sleep(5) >> x = x + n >> >> It will run in the console for a long time. How can I send a command and >> cause it to stop and pursue hello() function? >> > > You can use Ctrl-C and put the loop insiode a try/except clause > to catch the Interrupt. Or.... > > in the console.. and really I'd like to create a GUI that will run the >> longLoop() function after I push a button and then press another button to >> stop the longLoop() function and run the hello() function. >> > > There are two normal ways to do this in a GUI: > 1) break the loop into small chunks and run them in response > to timer events. The function then calls the timer at the end of > each chunk until it completes its task. This frees up the GUI to > detect user events between timers. > > 2) Use threads. This has the advantage of working in a GUI > or a commandline. But is a little bit more complex and you > need to make sure your loop isn't messing with (or being > messed with) the rest of the priogram via shared data/resources. > > in the wxPython, which is gui of choice for python. I'll settle for a way >> to >> do it via console as well. The overall idea is, is that I want to cut >> short >> the process of a piece of code in order to start another piece of code. >> > > You can put a terminating flag in the timer code or you can > send a message to stop a thread, either way will work. > > HTH, > > > -- > Alan Gauld > Author of the Learn to Program web site > http://www.alan-g.me.uk/ > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor >
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor