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 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