|  | 
| 
			 
			#1  
			
			
			
			
			
		 | |||
| 
 | |||
| 
				
				Wait for function to return?
			 
			
			Hi all I want to stop the execution of my script until a function returns. The idea is to stop the script when starting a task, where the user has to press a key (P), and as soon as he presses the key, the script should continue. Code: class Experiment:
        # This method is called somewhere...
	def start_green_face_task(self):
		self.avatar_to_morph().make_green_face()
		self.test_reaction_time() # Here the code should stop until this method returns (when the user presses P)! But how can this be achieved?
		self.end_green_face_task() # This method should be called *after* the user presses P!
		
	def test_reaction_time(self):
		while True:
			yield self.viztask.waitKeyDown('P', d)
			return
		
	def end_green_face_task(self):
		self.avatar_to_morph().remove_green_face()yield self.test_reaction_time() or self.viztask.schedule(self.test_reaction_time()) but somehow this doesn't do what I need... Thanks very much for help! Josh | 
| 
			 
			#2  
			
			
			
			
			
		 | |||
| 
 | |||
| 
			
			Please, this is very important for me... Anyone??
		 | 
| 
			 
			#3  
			
			
			
			
			
		 | |||
| 
 | |||
| 
			
			*Push* (I'm sorry, but it's very important that I get this to work asap)
		 | 
| 
			 
			#4  
			
			
			
			
			
		 | |||
| 
 | |||
| 
			
			Exactly *what* does not work? On which line does the program do other than you expect it to do? Following changes might not work, but at least it should call test_reaction_time() correctly. Issue is that end_green_face_task() will run at the same time (I think). You can move that method call to test_reaction_time() as well, but why do you need a viztask for a key event? You can also register the P button with the function end_green_face_task() Code: class Experiment:
        # This method is called somewhere...
	def start_green_face_task(self):
		self.avatar_to_morph().make_green_face()
		viztask.schedule(self.test_reaction_time()) # Here the code should stop until this method returns (when the user presses P)! But how can this be achieved?
		self.end_green_face_task() # This method should be called *after* the user presses P!
		
	def test_reaction_time(self):
		yield viztask.waitKeyDown('P')
		
		
	def end_green_face_task(self):
		self.avatar_to_morph().remove_green_face() | 
| 
			 
			#5  
			
			
			
			
			
		 | |||
| 
 | |||
| 
			
			I believe the following code should do what you want: Code: class Experiment:
	# This method is called somewhere...
	def start_green_face_task(self):
		viztask.schedule( self.test_reaction_time() )
		
	def test_reaction_time(self):
		self.avatar_to_morph().make_green_face()
		yield viztask.waitKeyDown('P') # Here the code should stop until this method returns (when the user presses P)! But how can this be achieved?
		self.end_green_face_task() # This method should be called *after* the user presses P!
		
	def end_green_face_task(self):
		self.avatar_to_morph().remove_green_face() | 
|  | 
| 
 | 
 | 
|  Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post | 
| return variable from keypress function | starbug | Vizard | 2 | 01-07-2010 11:14 AM | 
| return IDE to default config | billjarrold | Vizard | 2 | 12-10-2009 06:05 PM | 
| Sit, stay, wait? | EnvisMJ | Vizard | 1 | 05-20-2009 04:36 PM | 
| Unexpected carriage return | vizmaster | Vizard | 3 | 01-23-2007 12:46 PM | 
| plug-ins that return quaternions | hotspur1 | Vizard | 2 | 02-05-2004 07:47 PM |