import gradio as gr import github_manager def update(text): file_dir_path = '' file_name = 'main.py' response = github_manager.push(text, file_dir_path, file_name) if response.status_code != 200: return response.text else: print(f"{file_name} pushed") workflow_name = 'pygbag.yml' response = github_manager.trigger_workflow(workflow_name) if response.status_code != 204: return response.text else: print(f"{workflow_name} workflow started") workflow_name = 'pages-build-deployment' response = github_manager.trigger_workflow(workflow_name) if response.status_code != 204: return response.text else: print(f"{workflow_name} workflow started") return "update successful" with gr.Blocks() as demo: inp = gr.Textbox(value=""" import pygame import sys import asyncio # pygame.init() will initialize all # imported module pygame.init() clock = pygame.time.Clock() # it will display on screen screen = pygame.display.set_mode([600, 500]) # basic font for user typed base_font = pygame.font.Font(None, 32) # create rectangle input_rect = pygame.Rect(200, 200, 140, 32) # color_active stores color(lightskyblue3) which # gets active when input box is clicked by user color_active = pygame.Color('lightskyblue3') # color_passive store color(chartreuse4) which is # color of input box. color_passive = pygame.Color('chartreuse4') color = color_passive async def main(): user_text = '' active = False while True: for event in pygame.event.get(): # if user types QUIT then the screen will close if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if input_rect.collidepoint(event.pos): active = True else: active = False if event.type == pygame.KEYDOWN: print(event.key) # Check for backspace if event.key == pygame.K_BACKSPACE: # get text input from 0 to -1 i.e. end. user_text = user_text[:-1] elif event.key == 13 or event.key == 1073741912: if user_text == "ciao": user_text = "Ciao anche a te" # Unicode standard is used for string # formation else: user_text += event.unicode # it will set background color of screen screen.fill((255, 255, 255)) if active: color = color_active else: color = color_passive # draw rectangle and argument passed which should # be on screen pygame.draw.rect(screen, color, input_rect) text_surface = base_font.render(user_text, True, (255, 255, 255)) # render at position stated in arguments screen.blit(text_surface, (input_rect.x+5, input_rect.y+5)) # set width of textfield so that text cannot get # outside of user's text input input_rect.w = max(100, text_surface.get_width()+10) # display.flip() will update only a portion of the # screen to updated, not full area pygame.display.flip() # clock.tick(60) means that for every second at most # 60 frames should be passed. clock.tick(60) await asyncio.sleep(0) asyncio.run(main()) """) out = gr.Textbox(placeholder="Result") btn = gr.Button(value="Push") btn.click(update, inputs=[inp], outputs=[out]) gr.Markdown("""[Play the game!](https://pjavanrooyen.github.io/text-to-game/)""") if __name__ == "__main__": demo.launch()