def iterGen( self ):
        """
        Iterates through the target generator using delayed self referencing
        funcition calls to allow GUI updates between iterations
        """
        try:
            msg = self.targetGen.next()                                         # Execute the next iteration of the genrator
        except StopIteration:
            self.reset()                                                        # When the generator is finished, a StopIteration exception is raised.  This signals a normal finish in the generator
            self.statusMessage = 'Completed'
            self.event_generate( '<<Finished>>' )                               # A <<Finished>> virtual event signals the GUI that the progress meter is finished
            return
        self.targetIdx += 1
        self.drawBar()
        if msg == None:
            pass
        elif msg.startswith( 'AbortIteration' ):                                # The target generator can signal that something irrevocable has happend by yielding a value of 'AbortIteration'
            self.reset()
            self.statusMessage = msg
            self.event_generate( '<<Finished>>' )
            return
        else:
            self.statusMessage = msg                                            # If the generator yields a value other than None or 'AbortIteration', this message will be sent out to the controlling gui
            self.event_generate( '<<StatusRequest>>' )
        if self.killVar.get() == 1:                                             # Occurs if the user clicks the killBtn
            self.reset()
            self.statusMessage = 'Canceled'
            self.event_generate( '<<Finished>>' )
            return
        self.update_idletasks()
        self.after_idle( self.iterGen )

        Iterates through the target generator using delayed self referencing
        funcition calls to allow GUI updates between iterations
        
recipes/Python/576674_StatusMeter_widget_for_Tkinter/recipe-576674.py