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

" + title + "

") 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("
" # +f'visitors badge' # +"
") # actions submit.click( question_interface, [question_state, radio], [question_state, textbox, radio, result, resultImage], ) blocks.launch()