begin process at 2012 05 24 22:33:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Python

 > 

Divers

 > 

Aide et documentation

 > 

comment utiliser le réceptioonnaire d'évenement pour tester en permanence une entrée


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

comment utiliser le réceptioonnaire d'évenement pour tester en permanence une entrée

mercredi 7 avril 2010 à 19:50:37 | comment utiliser le réceptioonnaire d'évenement pour tester en permanence une entrée

fbeauch

Bonjour à tous

J'ai besoin d'aide pour élaborer un petit programme qui teste en continue une entrée et qui en fonction de sa valeur envoie une valeur ou une autre sur le port parallèle. Voici mon programme ci-dessous. getInPaperOut est l'entrée que je teste. Le problème c'est que le test de condition n'est éxécuté qu'une fois au lancement de la fenêtre alors que je voudrais que le réceptionnaire d'évenement de Tkinter lance en permanence en tache de fond ce test.
merci

from Tkinter import *
from parallel import *


fenetre = Tk()
p=Parallel()


Titre_fenetre = Label(fenetre,text = 'commande port parallele')
Titre_fenetre.pack()

bouton_quitter=Button(fenetre,text='Quitter',command=fenetre.quit)
bouton_quitter.pack()

if p.getInPaperOut()==True : #test de l'entrée PaperOut
p.setData(1)
else :
p.setData(2)


fenetre.mainloop() # demarrage receptionnaire evt

p.setData(0) # remise à 0 des sorties du port parallele
fenetre.destroy()


dimanche 2 mai 2010 à 00:50:16 | Re : comment utiliser le réceptioonnaire d'évenement pour tester en permanence une entrée

didoux95

Salut,

Pour cela, il existe un modèle qui s'appel MCV ; Pour "Modèle Vue Contrôleur". Quasiment toutes les applications sont développées sur ce modèle. Pour faire simple, tu as plusieurs "Objets" : des objets observateurs (qui attendent des changement d'état) et des objets observés.

Exemple d'un objet observé :
Code Python :
#!/bin/python
# -*- coding: utf-8 -*-

class Observed :
    
    #Créer un nouvel objet "Observed"
    def __init__ (self, name) :
        self._name = name
        self.listObservers = []
        self.maVariable = ""
        return
    
    
    #On ajoute de nouveaux observateurs
    def addObserver (self, observer) :
        self.listObservers.append(observer)
        return
    
    #On peut aussi en supprimer..
    def removeObserver (self, observer) :
        self.listObservers.remove(observer)
        return
    
    #Lors que ta variable va changer d'état on 
    #appel cette fonction qui est chargé d'en 
    #avertir les observateurs; On leur précise 
    #que c'est cet objet qui a changé d'état..
    def notifying (self) :
        for o in self.listObservers :
            o.stateChanged(self)
        return
    

    #Ici on change l'état de la variable
    def setVariable (self, newValue) :
        #Hop, la variable a changé d'état
        self.maVariable = newValue
        #On averti les autres !
        self.notifying()
        return
    
    #On permet à l'utilisateur de récupérer la nouvelle valeur
    def getVariable (self) :
        return self.maVariable


Exemple d'un objet observateur :
Code Python :
#!/bin/python
# -*- coding: utf-8 -*-

class Observer :
    
    #Créer un nouvel objet observateur
    def __init__ (self, name) :
        self._name = name
        return
    
    
    #La fonction qui est appellée par l'observé lorsqu'il à changé..
    def stateChanged (self, object) :
        newValue = object.getVariable()
        print(str(self._name) + " observing " + str(object._name) + " has detected a change : new value = " + str(newValue))
        return
    
    #On s'ajoute parmis les observateurs de "object"..
    def observing (self, object) :
        object.addObserver(self)
        return


Et enfin le Main :
Code Python :
#!/bin/python
# -*- coding: utf-8 -*-

#On import les modules créer
import Observer
import Observed


#code principal de l'application
if __name__ == "__main__" :
    
    #On créer deux objets qui vont être observés
    observed1 = Observed.Observed("Observed1")
    observed2 = Observed.Observed("Observed2")
    
    #On créer deux observateurs
    observer1 = Observer.Observer("Observer1")
    observer2 = Observer.Observer("Observer2")
    
    #Le premier observateur doit observer "observed1" et "observed2"
    observer1.observing(observed1)
    observer1.observing(observed2)
    
    #Le deuxième observateur doit observer "observed2"
    observer2.observing(observed2)
    
    #On applique un nouvelle valeur aux variables de "observed1" et "observed2"
    observed1.setVariable("new 1 !")
    observed2.setVariable("new 2 !")


A l'exécution de ce code, à quoi est-ce qu'on s'attend ?!
=> un message de la part de "observer1" a propos de "observed1" et "observed2"
=> et un message de la part de "observer2" de la part de "observe2"


Je reconnais le modèle MVC peut paraitre un peu compliqué, mais il est beaucoup plus efficace ..
Ou sinon tu as toujours une méthode un peu plus archaïque : tu mets le teste dans une boucle sans fin que tu places dans un Thread pour ne pas bloque le programme sur la boucle..

PS : Si tu souhaites exécuter ce code, il faut placer chacune des classes dans un module différent, portant le nom de la classe qu'il contient (en respectant la case ..).


Cette discussion est classée dans : port, fenetre, évenement, entrée, permanence


Répondre à ce message

Sujets en rapport avec ce message

Socket : charger ip depuis fichier [ par Shinji ] Bonjour @ ttes et @ ts, voici mon pb:  j'essaye de faire une petite app client/serveur et j'aimerais pouvoir enregister l'ip/port du serveur dans un Les forms [ par Ouk18 ] Ok, vous allez penser, suis la il vien de VB ou de HTML, je voulais definir des fenetre a l'interieur d'une autre fenetre.Seulement je maitrise pas du Client Serveur Netstat [ par power211 ] Bonjour à tous, je suis un ptit nouveau ds le monde du python, projet d ecole oblige mais c vrai que  le python c rapide comme langage.Bon treve de pl python et port parallèle [ par supai ] bonjour a tous,  Je recherche des informations, afin de créer un petit soft me permettant de stocker les données qui arrivent sur mon port parallèl Récuperer des données dans un champ d'entrée [ par sorcier0011 ] Bonjour, Je suis débutant et j'aimerais savoir comment faut il faire pour que lorsque il y a un champ d'entrée et qu'un utilisateur entre des données l' ohm ? [ par Nightfighter ] Bonjour tout le mondeAlors voila, je sais pas comment faire pour inserer un caracter ohm dans un fenetre:jai esseye dobtenir le code pour ce symbole:o Débutant en python... problème avec les fonctions [ par pedro ] Bonjour,Je suis sur python depuis quelques heures... en plus les languages orientés objets sont un peu nouveau pour moi... J'essaie désesperement de f utilisation de tkMessageBox [ par cynthia06 ] Bonjour a tous,Ma question va sans doute paraitre tres bete.J'essaie d'afficher un message avec tkMessageBox.Pour cela je fais:from Tkinter import *im Problème sur la taille de fenetre en Tkinter [ par stephane70 ] Bonjour, Je mets en place un petit programme destiné à faire un instantanée graphique des connections en cours sur le pc ainsi que les executables en Diverses questions et precision [ par sheorogath ] Bonjour,je me remets au python mais plus serieusement cette fois ci :palors j'ai plusieurs question sur des choses sur lesquels je trouve que peux d'i


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,479 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales