From: Sam Bull on
I'm writing a pyGTK program, and I need to display the contents of a
window for a few seconds before automatically moving on. I have tried
using the time.sleep method, but this has problems, such as the program
becoming unresponsive.

I have now attempted to use a timer, but this does not seem to run the
function at the end of the time. The code of my latest attempt:

def next(self=None, testnum=10, testspeed=5):
self.count += 1
#Sets label, telling the user the next word to memorise
self.nobtns.set_markup("Word %s is: %s" % (self.count,
self.words[self.count-1]))
self.nobtns.show()
if self.count == testnum: #When all words are shown
self.nobtns.hide()
else:
self.timer = threading.Timer(testspeed, self.next, [testnum,
testspeed])
self.timer.start()

Putting a print statement at the beginning of the function, I can see
that the function is not being run by the timer. Any help on getting
this working would be appreciated.

Thanks,
Sam Bull
From: Peter Otten on
Sam Bull wrote:

> I'm writing a pyGTK program, and I need to display the contents of a
> window for a few seconds before automatically moving on. I have tried
> using the time.sleep method, but this has problems, such as the program
> becoming unresponsive.
>
> I have now attempted to use a timer, but this does not seem to run the
> function at the end of the time. The code of my latest attempt:
>
> def next(self=None, testnum=10, testspeed=5):
> self.count += 1
> #Sets label, telling the user the next word to memorise
> self.nobtns.set_markup("Word %s is: %s" % (self.count,
> self.words[self.count-1]))
> self.nobtns.show()
> if self.count == testnum: #When all words are shown
> self.nobtns.hide()
> else:
> self.timer = threading.Timer(testspeed, self.next, [testnum,
> testspeed])
> self.timer.start()
>
> Putting a print statement at the beginning of the function, I can see
> that the function is not being run by the timer. Any help on getting
> this working would be appreciated.

GUI toolkits usually have their own way of handling timeouts. I don't know
pygtk, but the following looks promising:

http://www.pygtk.org/pygtk2tutorial/ch-TimeoutsIOAndIdleFunctions.html

Peter