def button_screen(self,choice_image=None, choice_text=None, button_txt=None, x_offset=0, y_offset=0): self.screen.blit(choice_image,(self.center_x-x_offset-choice_image.get_width()/2,\ self.center_y+y_offset-choice_image.get_height()/2)) if choice_text is not None: self.text_screen(text=choice_text,font=self.choice_text, maxwidth=int(self.screen_width/3),valign='bottom',halign='left',wait_time=None) center_button = TaskButton(rect=(self.center_x-70,self.bottom_y+160, 140,70),\ caption=button_txt, bgcolor=self.background_color, fgcolor=self.white, font=self.button) center_button.draw(self.screen) pygame.display.update() self.of.write('ButtonScreen on ' + repr(time.time()) + '\n') # Choice phase playing = True while playing: pygame.time.wait(20) for event in pygame.event.get(): if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE): pygame.quit() if event.type in (MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN): if button_txt is not None: if 'click' in center_button.handleEvent(event): self.press_sound.play() self.log('Left button clicked \n') button_clicked = ['left'] playing = False elif event.type == KEYDOWN: pressedKey = pygame.key.name(event.key) if pressedKey == 'left': center_button.buttonDown = True; center_button.draw(self.screen) pygame.display.update() button_clicked = ['left'] self.wait_fun(200) playing = False center_button.draw(self.screen) pygame.display.update() self.wait_fun(milliseconds=300) return button_clicked
def subject_information_screen(self): self.make_banner(self.header.render("Please enter your information below",True,self.header_color)) question = "Name" current_string = [] self.text_input(question + ":| " + string.join(current_string,"")) continue_button= TaskButton(rect=(self.center_x-100,self.center_y, 200,70),\ caption="Continue", bgcolor=self.background_color, fgcolor=self.white, font=self.button) continue_button.draw(self.screen) pygame.display.update() filling = True while filling: pygame.time.wait(20) if pygame.event.peek(MOUSEBUTTONDOWN) or pygame.event.peek(MOUSEBUTTONUP) or pygame.event.peek(QUIT) or pygame.event.peek(KEYDOWN): for event in pygame.event.get(): if event.type==MOUSEBUTTONDOWN and len(current_string)>0: continue_button.handleEvent(event) elif event.type==MOUSEBUTTONUP and len(current_string)>0: if 'click' in continue_button.handleEvent(event): self.press_sound.play() filling=False elif event.type == KEYDOWN: if event.key == K_BACKSPACE: current_string = current_string[0:-1] elif event.key == K_MINUS: current_string.append("_") elif event.key != 13: current_string.append(event.unicode) elif event.key == K_RETURN: filling = False elif event.type == pygame.QUIT: pygame.quit() exit() self.text_input(question + ": " + string.join(current_string,"")) continue_button.draw(self.screen) pygame.display.update() # self.wait_fun(milliseconds=300) elif 0 < round(time.time()*1000) % 700 < 350 and len(current_string)==0: self.text_input(question + ": ") elif 350 < round(time.time()*1000) % 700 < 700 and len(current_string)==0: self.text_input(question + ":| ") return (string.join(current_string,""))
def choice_screen(self,choice_image1=None, choice_text1=None, button_txt1="Choose", choice_image2=None, choice_text2=None, button_txt2=None): # This function sets up the canonical choice screen. Can be given on or two images. if choice_image1 is not None and choice_image2 is not None: self.screen.blit(choice_image1,(self.left_center_x,self.top_y)) self.screen.blit(choice_image2,(self.right_center_x,self.top_y)) elif choice_image1 is not None and choice_image2 is None: self.screen.blit(choice_image1,(self.center_x-choice_image1.get_width()/2,\ self.top_y-choice_image1.get_height()/2)) elif choice_image2 is not None and choice_image1 is None: self.screen.blit(choice_image1,(self.center_x-choice_image2.get_width()/2,\ self.top_y-choice_image2.get_height()/2)) # Write text (TODO: add condition for only one piece of text) if choice_text1 is not None: self.text_screen(text=choice_text1,font=self.choice_text, maxwidth=int(self.screen_width/3),valign='bottom',halign='left',wait_time=None) if choice_text2 is not None: self.text_screen(text=choice_text2,font=self.choice_text, maxwidth=int(self.screen_width/3),valign='bottom',halign='right',wait_time=None) # Make buttons if button_txt1 is not None and button_txt2 is not None: left_button = TaskButton(rect=(self.left_center_x-70,self.bottom_y+70, 140,70),\ caption=button_txt2, fgcolor=self.background_color, bgcolor=self.button_color, font=self.button) right_button = TaskButton(rect=(self.right_center_x-60,self.bottom_y+70, 140,70),\ caption=button_txt1, fgcolor=self.background_color, bgcolor=self.button_color, font=self.button) left_button.draw(self.screen) right_button.draw(self.screen) elif button_txt1 is not None and button_txt2 is None: right_button = TaskButton(rect=(self.center_x-60,self.bottom_y+70, 140,70),\ caption=button_txt1, fgcolor=self.background_color, bgcolor=self.button_color, font=self.button) right_button.draw(self.screen) elif button_txt2 is not None and button_txt1 is None: left_button = TaskButton(rect=(self.center_x-70,self.bottom_y+70, 140,70),\ caption=button_txt2, fgcolor=self.background_color, bgcolor=self.button_color, font=self.button) left_button.draw(self.screen) pygame.display.update() self.of.write('ChoiceScreen on ' + repr(time.time()) + '\n') # Choice phase playing = True while playing: pygame.time.wait(20) for event in pygame.event.get(): if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE): pygame.quit() if event.type in (MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN): if button_txt2 is not None: if 'click' in left_button.handleEvent(event): self.press_sound.play() self.log('Left button clicked \n') button_clicked = ['left'] playing = False if button_txt1 is not None: if 'click' in right_button.handleEvent(event): self.press_sound.play() button_clicked = ['right'] self.log('Right button clicked \n') playing = False elif event.type == KEYDOWN: pressedKey = pygame.key.name(event.key) if pressedKey == 'left': self.press_sound.play() left_button.buttonDown = True; left_button.draw(self.screen) pygame.display.update() button_clicked = ['left'] self.wait_fun(200) playing = False elif pressedKey == 'right': self.press_sound.play() right_button.buttonDown = True; right_button.draw(self.screen) pygame.display.update() button_clicked = ['right'] self.wait_fun(200) playing = False if button_txt1 is not None and button_txt2 is not None: left_button.draw(self.screen) right_button.draw(self.screen) elif button_txt1 is not None and button_txt2 is None: right_button.draw(self.screen) elif button_txt2 is not None and button_txt1 is None: left_button.draw(self.screen) pygame.display.update() self.wait_fun(milliseconds=300) return button_clicked