Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from utils import Test | |
| title = "Хто ти із Синтезу?" | |
| description = "Визначте, на кого з легендарної команди Синтез при Свічках (СпС) Ви найбільше схожі" | |
| info = "Пройдіть тест до кінця" | |
| # Define your list of questions and answers | |
| test = Test() | |
| def question_interface(question_state, answer): | |
| if (question_state["value"] == -1): | |
| question_state["value"] += 1 | |
| elif (answer is not None): | |
| question_state["value"] += 1 | |
| question_state["responses"].append(answer) | |
| current_question_index = question_state["value"] | |
| # Check if all questions have been answered | |
| if current_question_index == len(test): | |
| # Show all responses | |
| answer_ids = test.convert_to_answer_ids(question_state["responses"]) | |
| best_id = test.select_best(answer_ids) | |
| radio = gr.Radio.update(choices = [], value = None) | |
| name = f"Вітаємо, Ви {test.full_names[best_id]}!" | |
| title = test.titles[best_id] | |
| image_path = test.get_photos_path(best_id) | |
| return test.zero_state, name, radio, title, image_path | |
| # Display the current question | |
| question = test.get_question(current_question_index) | |
| # Create an input component for the answer | |
| answers = test.get_answers(current_question_index) | |
| radio = gr.Radio.update(choices = answers, value = None) | |
| image_description = test.get_description(current_question_index) | |
| image_path = test.get_image_path(current_question_index) | |
| return question_state, question, radio, image_description, image_path | |
| with gr.Blocks() as blocks: | |
| question_state = gr.State(value = test.zero_state) | |
| gr.Markdown("<h1 style='text-align: center; margin-bottom: 1rem'>" | |
| + title | |
| + "</h1>") | |
| gr.Markdown(description) | |
| with gr.Row(): | |
| with gr.Column(): | |
| textbox = gr.Textbox( | |
| label="Запитання", | |
| value="Натисніть ВПЕРЕД для того щоб розпочати тест", | |
| interactive=False, | |
| ) | |
| radio = gr.Radio( | |
| label="Варіанти відповіді", | |
| choices=[], | |
| #value=default_lang, | |
| #type="index", | |
| interactive=True, | |
| ) | |
| with gr.Row(): | |
| submit = gr.Button("ВПЕРЕД", variant="primary", interactive=True) | |
| with gr.Column(): | |
| result = gr.Textbox(label="Як би відповів СпС?", interactive=False) | |
| resultImage = gr.Image("./emblem.png", label="Image", interactive=False, height=500) | |
| gr.Markdown(info) | |
| # gr.Markdown("<center>" | |
| # +f'<img src={badge} alt="visitors badge"/>' | |
| # +"</center>") | |
| # actions | |
| submit.click( | |
| question_interface, | |
| [question_state, radio], | |
| [question_state, textbox, radio, result, resultImage], | |
| ) | |
| blocks.launch() |