Re: loop in body of main program

Phil Edwards <[email protected]> Tue, 25 Mar 2008 23:27:04 +0000
Newsgroups gmane.comp.python.pythoncard
Message-ID <[email protected]>
Okay, probably not the nicest bit of code I've ever written, but it 
seems to do the trick:

-----begin loop-demo.rsrc.py-----
{'application':{'type':'Application',
           'name':'Template',
     'backgrounds': [
     {'type':'Background',
           'name':'bgTemplate',
           'title':u'Loop Demo',
           'size':(380, 220),
           'statusBar':1,
           'style':['resizeable'],

         'menubar': {'type':'MenuBar',
          'menus': [
              {'type':'Menu',
              'name':'menuFile',
              'label':'&File',
              'items': [
                   {'type':'MenuItem',
                    'name':'menuFileExit',
                    'label':'E&xit',
                    'command':'exit',
                   },
               ]
              },
          ]
      },
          'components': [

{'type':'StaticText',
     'name':'StaticText3',
     'position':(10, 45),
     'text':u'environment:',
     },

{'type':'StaticText',
     'name':'StaticText2',
     'position':(10, 30),
     'text':u'known as iteration) in an event-driven programming',
     },

{'type':'Button',
     'name':'stopLoopBtn',
     'position':(115, 125),
     'label':u'Stop Looping',
     },

{'type':'Button',
     'name':'startLoopBtn',
     'position':(10, 125),
     'label':u'Start Looping',
     },

{'type':'Gauge',
     'name':'Gauge1',
     'position':(15, 80),
     'size':(345, 28),
     'backgroundColor':(220, 230, 232, 255),
     'layout':'horizontal',
     'max':10,
     'value':0,
     },

{'type':'StaticText',
     'name':'StaticText1',
     'position':(10, 15),
     'text':u'This program demonstrates a way to control loops (also',
     },

] # end components
} # end background
] # end backgrounds
} }
------end loop-demo.rsrc.py------

-----begin loop-demo.py-----
#!/usr/bin/python
# simple demonstration of looping

# standard Python imports
import time

# PythonCard imports
import wx
from PythonCard import model

class loopDemo(model.Background):

     def on_initialize(self, event):
         self.loopRunning = False
         self.components.stopLoopBtn.enabled = False
         print self.components.Gauge1.max
         print self.components.Gauge1.value

     def on_startLoopBtn_mouseClick(self, event):
         if not self.loopRunning:
             self.components.startLoopBtn.enabled = False
             self.components.stopLoopBtn.enabled = True
             self.components.Gauge1.value = 0
             self.loopRunning = True
             self.countValue = 0
             while self.countValue < self.components.Gauge1.max:
                 self.countValue += 1
                 self.components.Gauge1.value = self.countValue
                 wx.Yield()
                 time.sleep(1)
                 print self.countValue

     def on_stopLoopBtn_mouseClick(self, event):
         if self.loopRunning:
             self.loopRunning = False
             self.countValue = self.components.Gauge1.max + 1
             self.components.startLoopBtn.enabled = True
             self.components.stopLoopBtn.enabled = False
             self.components.Gauge1.value = 0

if __name__ == '__main__':
     app = model.Application(loopDemo)
     app.MainLoop()
------end loop-demo.py------

-- 

Regards

Phil Edwards   |  PGP/GnuPG Key Id
Brighton, UK   |  0x68393AEE


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace