Wxpython, using more than 1 timer?

2006-07-22 Thread janama
Hi all,

Using wx
When adding a second timer as i have the first,  the second timer
adding  stops the first timer (updating or stops?) . In this example im
updating a uptime and localtime label. It works fine for displaying the
last self.startTimer2() called. But prevents the previous
self.startTimer1() from running . Im doing something fundamentally
wrong i guess?

def __init__(self, parent):
self._init_ctrls(parent)

#Start timers
self.startTimer1()
self.startTimer2()

def startTimer1(self):
self.t1 = wx.Timer(self)
self.t1.Start(360) # 36 ms = 1/10 hour
self.Bind(wx.EVT_TIMER, self.OnUpTime)

def startTimer2(self):
self.t2 = wx.Timer(self)
self.t2.Start(1000) # run every second
self.Bind(wx.EVT_TIMER, self.OnTime)

def OnTime(self,evt):
self.lblTime.SetLabel(str(time.localtime()))

def OnUpTime(self, evt):
self.lblUptime.SetLabel('Running ' + (str(myTimerText[0])) + '
hours') # 1/10  hour count
myTimerText[0] = myTimerText[0] + .1

Any help appreciated, ta

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Wxpython, using more than 1 timer?

2006-07-22 Thread janama
Thanks for that, cheers

Regards


nikie wrote:
 janama wrote:

  Hi all,
 
  Using wx
  When adding a second timer as i have the first,  the second timer
  adding  stops the first timer (updating or stops?) . In this example im
  updating a uptime and localtime label. It works fine for displaying the
  last self.startTimer2() called. But prevents the previous
  self.startTimer1() from running . Im doing something fundamentally
  wrong i guess?
 
  def __init__(self, parent):
  self._init_ctrls(parent)
 
  #Start timers
  self.startTimer1()
  self.startTimer2()
 
  def startTimer1(self):
  self.t1 = wx.Timer(self)
  self.t1.Start(360) # 36 ms = 1/10 hour
  self.Bind(wx.EVT_TIMER, self.OnUpTime)
 
  def startTimer2(self):
  self.t2 = wx.Timer(self)
  self.t2.Start(1000) # run every second
  self.Bind(wx.EVT_TIMER, self.OnTime)
 
  def OnTime(self,evt):
  self.lblTime.SetLabel(str(time.localtime()))
 
  def OnUpTime(self, evt):
  self.lblUptime.SetLabel('Running ' + (str(myTimerText[0])) + '
  hours') # 1/10  hour count
  myTimerText[0] = myTimerText[0] + .1
 
  Any help appreciated, ta

 The problem is not that the first timer ist stopped, the problem is
 that both timers happen to call the same method in the end.

 Think of the Bind method as an assignment: it assigns a handler
 function to an event source. If you call it twice for the same event
 source, the second call will overwrite the first event handler. That's
 what happens in your code.

 The easiest way to change this is by using different ids for the
 timers:

 def startTimer1(self):
 self.t1 = wx.Timer(self, id=1)
 self.t1.Start(2000)
 self.Bind(wx.EVT_TIMER, self.OnUpTime, id=1)

 def startTimer2(self):
 self.t2 = wx.Timer(self, id=2)
 self.t2.Start(1000)
 self.Bind(wx.EVT_TIMER, self.OnTime, id=2)

 This way, the timers launch two different events, which are bound to
 two different methods.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Formatted string to object

2006-06-26 Thread janama
Thankyou everyone for help last time:

The following works ok when setting a
wx.lib.buttons.GenBitmapTextButton's disabled bitmap in using wxpython

instead of this:
self.b1.SetBitmapDisabled(self.yellow)

i can use this:
aaa = 1
result1 = eval(self.b%s.SetBitmapDisabled(self.yellow) % aaa)
result

YAY!


How would i to achieve this with getattr() ?

getattr(locals()['parent'], aaa)???

Why would this be better as recommended in previous post here

http://groups.google.com.au/group/comp.lang.python/browse_frm/thread/2529515bc85cd954/c2f080b21d668081?q=janamarnum=1#c2f080b21d668081

Any help appreciated

ta

-- 
http://mail.python.org/mailman/listinfo/python-list


Formatted string to object

2006-06-19 Thread janama
Hi,

can such a thing be done somehow?


aaa = self.aaa
bbb = %s.%s % ('parent', 'bbb')

Can you use strings or %s strings like in the above or

aaa = 'string'
aaa.%s() % 'upper'

Somehow?

Thanks for taking a look at this

Regards
Janama

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Newbie wxpython staticbitmap help please

2006-06-16 Thread janama
Thanks Jean this now makes sense, really appreciate your time and
effort mate.

def __init__(self, parent):
self._init_ctrls(parent)
self.t1 = wx.Timer(self)
self.t1.Start(2000) # 2 seconds
self.Bind(wx.EVT_TIMER, self.OnTest1Timer)

self.OnTest1Timer(self)

def OnTest1Timer(self, evt):

if os.path.isfile('images/page1.txt'):
  print ok file present
  i = wx.Image('images/pageGreen.png',wx.BITMAP_TYPE_PNG)
  b1 = wx.BitmapFromImage(i)
  self.staticBitmap1.SetBitmap(b1)
else:
  print ok file present
  i = wx.Image('images/pageGrey.png',wx.BITMAP_TYPE_PNG)
  b1 = wx.BitmapFromImage(i)
  self.staticBitmap1.SetBitmap(b1)

The above works a treat,

thanks again Jean

janama

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Newbie wxpython staticbitmap help please

2006-06-15 Thread janama

jean-michel bain-cornu wrote:
 Why won't you write it yourself using the demo ?
 It's clear and well documented.
 Regards,
 jm

Hi, have been just trying for 5 hours with the timer demo in wx, i just
havnt clicked with how to tie it in together,

I know (think) i need the following features from the timer demo ,
where you can periodically call a function using the wx.timer

self.Bind(wx.EVT_TIMER, self.OnTest1Timer)
#---(bind to the frame ?)

self.Bind(wx.EVT_BUTTON, self.OnTest3Start, t3b1)
#---(this binds to a button, how do i bind to my application on load or
startup instead ?)

def OnTest1Timer(self, evt):
self.log.write(got EVT_TIMER event\n)
#---(dont think i need the logging?)

def OnTest3Start(self, evt):
self.t3 = NotifyTimer(self.log)
self.t3.Start(1000)
self.log.write(NotifyTimer timer started\n)
self.t3b2.Enable()

#---(the Start i guess i will work if i remap the button event to an on
load type? event?

def OnTest3Stop(self, evt):
self.t3.Stop()
self.log.write(NotifyTimer timer stoped\n)
del self.t3
self.t3b2.Disable()
#---(Guess i wont need to stop the timer, as i want it to trigger the
'refreshing' of the StaticBitmaps ?)

# When deriving from wx.Timer you must provide a Notify method
# that will be called when the timer expires.
class NotifyTimer(wx.Timer):
def __init__(self, log):
wx.Timer.__init__(self)
self.log = log

def Notify(self):
self.log.write(got NotifyTimer event\n)
#---(dont know if i need this if i dont want to use this log feature)?


 Im sorry if this all seems really amatuerish, i have genuially tried
hard to get my head around it , but i get error after error in boa.
Somewhone couldnt append a timer and perhaps help to refresh the
StaticBitmaps described, with the code, in first post). I will be able
to see and learn greatly from this.

Maybe some advice on where to find lists of the methods used in
wxpython
For example it took me hours to find methods ? like

StaticBitmap.SetImage(imageName)

Is there any good lists of these methods, properties etc for wxpython
controls?

Any good wxpython ide/editors that can intellisense them?  boa,
komodo, stani's arnt working with intellisensing wx for me, (maybe i
cant configure them though)

Thanks for any help with any of this

Regards

-- 
http://mail.python.org/mailman/listinfo/python-list