Pygame event problem
Anand
anandpillai6 at yahoo.com
Wed Sep 25 11:02:49 EDT 2002
Hi !
I wrote a simple image viewer in python using pygame image api. The
GUI
is in wxPython. There are 2 classes, one for the window frame and one
for
the pygame image processing.
I added an effect in the pygame class which is called from a menu
in the
wxPython GUI. Here is the code of the GUI class which makes the
call.
def OnLiquidEffect(self, event):
#imgview is of type MyPyGameImgViewer which is the pygame
#class used to load the images.
self.imgview.LiquidEffect()
pass
Here is the method which it calls on the MyPyGameImgViewer class.
class MyPyGameImgViewer:
...
...
...
def LiquidEffect(self):
anim = 0.0
if self.imgfile is not None:
self.ShowImage(self.imgfile)
self.flag = 0
bitmap = pygame.Surface((self.h, self.w))
bitmap.blit(self.screen, (0, 0))
print self.h, self.w
while 1:
anim = anim + 0.4
for x in range(0, self.h, 20):
for y in range(0, self.w, 20):
xpos = (x + (sin(anim + x * .01) * 15))
+ 20
ypos = (y + (sin(anim + y * .01) * 15))
+ 20
self.screen.blit(bitmap, (x, y), (xpos,
ypos, 20, 20))
#I think this code will remove all the
#events from the queue once it detects
#a mouse event.
if pygame.event.peek([MOUSEBUTTONDOWN]):
pygame.event.get([MOUSEBUTTONDOWN])
break
pygame.display.flip()
else:
print "No image loaded!"
The effect is stopped by clicking with the mouse on the pygame
display
window. My problem is that if I try to invoke any other menu methods
in the
main GUI frame *without doing this*, the application ie both the
wxFrame and
the pygame display window, hangs.
I have a gut-feeling that this is because I am calling a method on
the MyPyGameImgViewer class without exiting the while loop.
Is there a way around this, ie to call any method in the
MyPyGameImgViewer class
from the GUI class, while one of its methods is executing a while loop
?
Thanks
Anand Pillai
More information about the Python-list
mailing list