def reDessiner(self): logD("ZoneDessin.reDessiner() !") # 1. On retire les widgets self.clear_widgets() # 2. On recalcule les dimensions et les cases self.calculerDimensions() self.calculerCases() # 3. On trie les cases par index puis on les ajoute à la ZoneDessin. list.sort(self.cases, key=lambda case: case.index) for case in self.cases: self.add_widget(case) print(len(self.elements)) for element in sorted(self.elements, key=lambda element: element.numero): print(element)
def __init__(self): """ Le constructeur de la classe Ascenseurs est la fonction la plus importante. Elle : 1. Initialise le logger (voir logger.py) 2. lance la construction de Tkinter 3. Customise la fenêtre de l'application 4. Crée le panneau principal contenant tous les autres widgets et le positionne 5. Charge les ressources externes (dessins) """ logger.initialiser() logI('Construction de l\'application') super().__init__() self.geometry('800x600') self.panneau_principal = tk.Frame(self) self.panneau_principal.grid() ressources.chargerDessins() # Création du panneau de maintenance self.panneau_maintenance = PanneauMaintenance( parent=self.panneau_principal) # Création du panneau de puit self.panneau_puit = PanneauPuit(self.panneau_principal) # Création de la cabine self.cabine = Cabine(self.panneau_puit.dessin_puit) # Création du panneau interne de la Cabine self.panneau_cabine = PanneauCabine(self.panneau_principal, self.cabine) # Création des étages self.etages = Etages(self.panneau_puit.dessin_puit) # Création des capteurs self.capteurs = Capteurs(self.panneau_puit.dessin_puit, self.cabine, self.etages.etages) logD('Lancement de l\'animation') self.animation() self.mainloop()
def chargerDessins(): try: global dessin_bouton_bas global dessin_bouton_bas_actif global dessin_bouton_double_bas global dessin_bouton_haut global dessin_bouton_haut_actif global dessin_bouton_double_haut global dessin_bouton_rond global images_chargees dessin_bouton_haut = tk.PhotoImage(file='haut.gif') dessin_bouton_haut_actif = tk.PhotoImage(file='haut_actif.gif') dessin_bouton_double_bas = tk.PhotoImage(file='double_bas.gif') dessin_bouton_bas = tk.PhotoImage(file='bas.gif') dessin_bouton_bas_actif = tk.PhotoImage(file='bas_actif.gif') dessin_bouton_double_haut = tk.PhotoImage(file='double_haut.gif') dessin_bouton_rond = tk.PhotoImage(file='rond.gif') images_chargees = True logD('Dessins chargés !') except tk.TclError as e: logE('''Les images GIF des boutons n'ont pas pu être chargées''') exit()
def __init__(self, etapes=None, transition=None, X=0, Y=0, amont=True, numero=None): Element.__init__(self, X, Y, 3) self._etapes = [] if isinstance(etapes, Etape): self._etapes.append(etapes) elif isinstance(etapes, list): for etape in etapes: assert isinstance(etape, Etape) self._etapes.extend(etapes) self._transition = transition if transition is not None and X != 0 and Y != 0: self.X = transition.X self.Y = transition.Y self._amont = amont self._numero = Liaison.auto_numerotation if numero is None else numero Liaison.auto_numerotation += 1 logD(str(self))
def chargerXML(self, fichier): """ Vide le dictionnaire elements et le remplit avec les données du fichier XML """ logI("Chargement du fichier " + str(fichier) + "...") self._elements.clear() try: arbre = parse(source=fichier) except FileNotFoundError as e: raise GrafcetError("Fichier : " + str(fichier) + " introuvable !") except ParseError as e: raise GrafcetError( "Erreur lors du chargement du fichier XML : " + fichier + "\nMessage du module XML : " + ErrorString(e.code)) # TODO : vérifier intégrité du fichier xml etapes = arbre.find('Etapes') transitions = arbre.find('Transitions') liaisons = arbre.find('Liaisons') for etape_xml in etapes.findall('Etape'): etape = Etape() etape.deXml(etape_xml) logD(etape) self._elements['E' + str(etape.numero)] = etape for transition_xml in transitions.findall('Transition'): transition = Transition() transition.deXml(transition_xml) logD(transition) self._elements['T' + str(transition.numero)] = transition for liaison_xml in liaisons.findall('Liaison'): liaison = Liaison() liaison.deXml(liaison_xml, self._elements.values()) logD(liaison) self._elements['L' + str(liaison.numero)] = liaison logI(str(len(self._elements)) + " éléments trouvés !")
def __init__(self, **kwargs): logD("Création de la zone de dessin !") Widget.__init__(self, **kwargs) self.cases = [] self.reDessiner()
def __init__(self, controleur, *args): BoxLayout.__init__(self, *args) logD("Lancement de la GUI !") self.controleur = controleur self.zone_controle.controleur = controleur self.on_elements()
def lancerTests(self): logD('Lancement des tests !') self.controleur.ajouterEvenement('TEST')
def miseAJour(signal, valeur): signaux[signal] = valeur for k in signaux.keys(): if signaux[k] is not signaux_precedents[k]: logD(str(signal) + ': ' + str(valeur)) signaux_precedents[k] = signaux[k]
def ajouter(liste_signaux): logD('Ajout signal ' + str(liste_signaux)) signaux.update(liste_signaux) signaux_precedents.update(liste_signaux)