def build(self): """ Attributs : dico_bouton_reponse : clé : texte de la question valeur : dictionnaire avec clé : texte de la réponse, valeur : le bouton associé à cette réponse dico_importance : (à faire) clé : texte de la question valeur: dictionnaire avec clé : texte de l'importance valeur : le bouton associé à cette importance dico_texte_reponse: clé : nom du fichier pour la réponse (appelé reponse dans l'ensemble du programme) valeur : le texte à l'interieur de ce fichier dico_layout_question: clé : texte de la question valeur : intégralité du layout de la slide de la question rgba_base : couleur des boutons de base rgba_oui : couleur des boutons quand ils sont activés Méthodes : dico_reponse_vers_response: entrée : self, dictionnaire de bouton_reponses sortie : la seule réponse activé du dictionnaire On fait une boucle sur les items (réponse, bouton) du dictionnaire. Si le bouton est activé on renvoie réponse dico_importance_vers_importance: click_bouton_reponse: entrée : self instance On récupère la question grâce à l'id de l'instance (premier terme du split par ,) On va chercher le dictionnaire de boutons correspondant : self.dico_bouton_reponse[question] Via une boucle sur les .values() du précédent dictionnaire (on a donc des boutons): on change la couleur de tous les boutons (et on les désactive) sauf l'instance on change la couleur de l'instance et on active l'instance synthese: entree : self, instance """ self.dico_bouton_reponse = {} self.dico_bouton_importance = {} self.dico_texte_reponse = {} self.dico_layout_question = {} self.rgba_base = (135,142,127,0.25) self.rgba_oui = (0,1,0,1) self.direction = "bottom" for reponse in os.listdir("Texte_bouton"): with open(os.path.join("Texte_bouton",reponse)) as file: self.dico_texte_reponse[reponse] = file.read() for question in os.listdir("Questions"): # question est l'uid du scrutin path_question = os.path.join("Questions",question) with open(path_question,"r") as file: texte_question = file.read() temp_dico_bouton_reponse = {} for reponse,texte_reponse in self.dico_texte_reponse.items(): temp_bouton = Button(text = texte_reponse) temp_bouton.id = question + "," + texte_reponse + "," + "reponse" temp_bouton.background_color = self.rgba_base temp_bouton.bind(on_press = self.click_bouton) if "texte_bouton_non_votant.txt" in reponse: temp_bouton.activated = True #temp_bouton.background_color = self.rgba_oui else: temp_bouton.activated = False temp_dico_bouton_reponse[texte_reponse] = temp_bouton self.dico_bouton_reponse[question] = temp_dico_bouton_reponse temp_layout = GridLayout(cols = 1) question_layout = BoxLayout(orientation = "horizontal") #label_question = Label(text=texte_question) #label_question.size_hint_y = None #label_question.text_size = (question_layout.width,None) #label_question.height = question_layout.height #label_question.size_hint_x = 0.8 my_label = WrappedLabel(text=texte_question, font_size="20sp") #question_layout.add_widget(label_question) question_layout.add_widget(my_label) precision_layout = BoxLayout(orientation = "vertical") precision_bouton = Button(text = "Précision") precision_bouton.bind(on_press = self.precision) precision_bouton.id = texte_question precision_bouton.size_hint_x = 1 precision_layout.add_widget(precision_bouton) temp_bouton_synthese = Button(text = "Synthèse") temp_bouton_synthese.bind(on_press = self.vers_synthese) precision_layout.add_widget(temp_bouton_synthese) precision_layout.size_hint_x = 0.2 question_layout.add_widget(precision_layout) temp_layout.add_widget(question_layout) layout_bouton = BoxLayout(orientation = "horizontal") for reponse,bouton in self.dico_bouton_reponse[question].items(): layout_bouton.add_widget(bouton) temp_layout.add_widget(layout_bouton) self.label_importance = Label(text = "Cette question est-elle importante pour vous ?") self.label_importance.font_size = 25 temp_layout.add_widget(self.label_importance) self.liste_importance_texte = ["Un peu","Beaucoup","À la folie","Pas du tout"] self.importance_layout = BoxLayout(orientation = "horizontal") #Mettre importance dans la synthèse temp_dico_bouton_importance = {} for importance_texte in self.liste_importance_texte: temp_bouton = Button(text = importance_texte) temp_bouton.id = question + "," + importance_texte + "," + "importance" temp_bouton.activated = False temp_bouton.background_color = self.rgba_base temp_bouton.bind(on_press = self.click_bouton) if temp_bouton.text == self.liste_importance_texte[-1]: temp_bouton.activated = True #temp_bouton.background_color = self.rgba_oui temp_dico_bouton_importance[importance_texte] = temp_bouton self.importance_layout.add_widget(temp_bouton) temp_layout.add_widget(self.importance_layout) self.dico_bouton_reponse[question] = temp_dico_bouton_reponse self.dico_bouton_importance[question] = temp_dico_bouton_importance self.dico_layout_question[question] = temp_layout self.add_widget(self.dico_layout_question[question]) # On fait une dernière slide pour la synthèse (à changer dans une future version) layout_synthese = BoxLayout(orientation="vertical") layout_haut = BoxLayout(orientation="horizontal") label_synthese = Label(text="Localisation") label_synthese.font_size = 70 bouton_reset = Button(text="Reset questions") bouton_reset.size_hint_x = 0.3 bouton_reset.background_color = (1, 0, 0, 1) bouton_reset.font_size = 25 layout_haut.add_widget(label_synthese) layout_haut.add_widget(bouton_reset) layout_synthese.add_widget(layout_haut) self.text_input_synthese = TextInput(text="Entrer votre adresse avec votre ville") self.text_input_synthese.font_size = 50 layout_synthese.add_widget(self.text_input_synthese) self.bouton_synthese = Button(text="Que choisir ?") self.bouton_synthese.font_size = 50 self.bouton_synthese.bind(on_press=self.synthese) layout_synthese.add_widget(self.bouton_synthese) self.add_widget(layout_synthese)