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__':