On Wed Nov 11 17:32:36 GMT 2009, Tim and Alison Bentley wrote: > What I would like to do is to be able to fade the images in and out > > self.setWindowOpacity(0.5) > self.display.setPixmap(image) > self.setWindowOpacity(1) > > I accept it may be necessary to add delays in but even with 1 second delays > in the code the screen does not fade and reappear. If I remove the 3rd > line the display does go semi transparent.
This won't work as you expect because of the way control flow works for event-based frameworks like PyQt. Changes to the user interface typically take place when control returns to the framework, and not at the time you call a method on a widget. If you insert a delay in the above code, it just takes longer for control to return to the framework - the changes you made to the label are then applied, and the first change to its opacity may even be discarded if not immediately overridden by the second change. What you need to do is to change the opacity, then tell the framework that you want to update the opacity again later. You can do this by creating a single-shot timer and another method: # [In some other method...] self.setWindowOpacity(0.5) self.display.setPixmap(image) QTimer.singleShot(1000, self.updateOpacity) def updateOpacity(self): self.setWindowOpacity(1) There are other ways to control the timing of this kind of animation, but this is possibly the simplest for your use case. Here's some example code to play with: http://www.diotavelli.net/PyQtWiki/Fading%20and%20unfading%20a%20widget%20with%20a%20delay David _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt