1 from __future__ import generators
3 # import Twisted and install
4 from twisted.internet import _threadedselect
5 _threadedselect.install()
6 from twisted.internet import reactor
11 from pygame.locals import *
14 import pygame.fastevent as eventmodule
16 import pygame.event as eventmodule
19 # You can customize this if you use your
20 # own events, but you must OBEY:
22 # USEREVENT <= TWISTEDEVENT < NUMEVENTS
24 TWISTEDEVENT = USEREVENT
26 def postTwistedEvent(func):
27 # if not using pygame.fastevent, this can explode if the queue
28 # fills up.. so that's bad. Use pygame.fastevent, in pygame CVS
30 eventmodule.post(eventmodule.Event(TWISTEDEVENT, iterateTwisted=func))
34 reactor.callLater(1, helloWorld)
35 reactor.callLater(1, helloWorld)
37 def twoSecondsPassed():
38 print "two seconds passed"
39 reactor.callLater(2, twoSecondsPassed)
43 yield eventmodule.wait()
45 event = eventmodule.poll()
46 if event.type == NOEVENT:
53 if hasattr(eventmodule, 'init'):
55 screen = pygame.display.set_mode((300, 300))
57 # send an event when twisted wants attention
58 reactor.interleave(postTwistedEvent)
59 # make shouldQuit a True value when it's safe to quit
60 # by appending a value to it. This ensures that
61 # Twisted gets to shut down properly.
63 reactor.addSystemEventTrigger('after', 'shutdown', shouldQuit.append, True)
65 for event in eventIterator():
66 if event.type == TWISTEDEVENT:
67 event.iterateTwisted()
70 elif event.type == QUIT:
72 elif event.type == KEYDOWN and event.key == K_ESCAPE:
77 if __name__ == '__main__':