IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Evenement "changement de valeur d'une variable"


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2011
    Messages : 45
    Points : 57
    Points
    57
    Par défaut Evenement "changement de valeur d'une variable"
    Bonjour,

    J'imagine que ce sujet a déjà été abordé dans ce forum, mais difficile à formuler, les critères de recherche que j'ai utilisés ne m'ont donné aucun résultat.

    Ma question est donc la suivante:

    Est-il possible "d'écouter" une variable pour déclencher un événement lorsque sa valeur change ? Mes investigations sur le web semblent répondre par la négative, mais un seul contre-exemple suffirait à prouver le contraire.

    Si quelqu'un a ce contre-exemple, ou peut m'expliquer pourquoi cette fonctionnalité ne peut exister, je lui en saurai gré.

    Merci d'avance.

    G CAPLANDE

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Caplande Voir le message
    Est-il possible "d'écouter" une variable pour déclencher un événement lorsque sa valeur change ? Mes investigations sur le web semblent répondre par la négative, mais un seul contre-exemple suffirait à prouver le contraire.
    Tout dépend de ce qu'on appelle "variable" et de l'objet auquel elle correspond.
    Une réalisation de ce type de variable est par exemple les "variables" Tkinter qui font exactement ça.

    - W
    PS: En POO, ce genre d'objet réalise peu ou prou le pattern observer
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Caplande Voir le message
    Si quelqu'un a ce contre-exemple, ou peut m'expliquer pourquoi cette fonctionnalité ne peut exister, je lui en saurai gré.
    Tout à fait.
    En fait tout tient dans le rôle d'une variable. Une variable est avant tout faite pour mémoriser une information afin de pouvoir la réutiliser plus tard. Cette information est donc à l'initiative du développeur qui choisit de la mettre à jour selon les circonstances. Il connait donc les circonstances qui entrainent la mise à jour, il n'a donc pas besoin de "surveiller" la variable puisque c'est lui qui la met à jour.

    Donc ton problème se situe, à mon avis, plus en amont. Un exemple : imagine que tu crées un capteur audio qui s'active quand il entend un son. Dans ce cas il met des variables à jour évidemment. Ce qu'il faut, c'est donc surveiller non pas la variable mais l'activation qui entraine sa mise à jour.
    Ce mécanisme simpliste de surveillance non pas d'une variable mais d'un évènement peut s'élargir dans, comme l'a dit wiztricks, dans un "observateur" => ici expliqué de façon plus détaillée.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2011
    Messages : 45
    Points : 57
    Points
    57
    Par défaut Evenement "changement de valeur d'une variable"
    Merci à vous deux. Je vais me pencher sur le sujet.

    CAPLANDE

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    J'aurais dit @property mais j'ai peut-être mal compris la question ...

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 105
    Points : 4 455
    Points
    4 455
    Par défaut
    bonjour

    @property c'est uniquement pour des attributs de classe et ici on ne connait pas le contexte de la question donc pas possible de répondre.
    A la place d'un setter, je suis plus pour un descripteur (même chose les 2). Et utiliser un setter n'est qu'une petite partie de la réponse

    Exemple simple avec un descripteur : On attache des fonctions de callback à un attribut. Pour faire un peu étoffer, ici, on attache soit des fonctions, soit des méthodes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    #!/bin/env python
     
    """
    Utiliser un descripteur ...
    https://docs.python.org/fr/3/howto/descriptor.html
    """
     
    import random
     
     
    class EstObserve:
        def __init__(self, funcs=None, instances=None):
            """
            funcs : [function] : envoi notif vers function()
            instances: [str] : envoi notif vers instanceclasse.on_event()
            """
            if not funcs:
                funcs = []
            self.callbacks = funcs
            if not instances:
                instances = []
            self.instances = instances
     
        def __set_name__(self, owner, name):
            self.name = "__" + name
     
        def __get__(self, obj, objtype=None):
            return getattr(obj, self.name)
     
        def __set__(self, obj, value):
            # print(f" update ..{self.name[2:]} en : {value}")
            setattr(obj, self.name, value)
            for call in self.callbacks:
                call(self.name[2:], getattr(obj, self.name))
            for call in self.instances:
                try:
                    getattr(obj, call).on_event(self.name[2:], value)
                except AttributeError:
                    pass
     
     
    def ecouteur(name, data):
        print(f"\t# receveur: var {name} == {data}")
     
     
    def ecouteur2(name, data):
        print(f"\t# est {'mineur' if data < 18 else 'majeur'}")
        # if data < 18: exit(8)
     
     
    class DataBase:
        """ devrait exister une interface """
        def on_event(self, name, data):  # méthode obligatoire avec cette signature
            print("\t# update dans bd ...")
     
     
    class Personne:
        age = EstObserve(
            funcs=[ecouteur, ecouteur2],
            instances=["db"]
        )
     
        def __init__(self, age) -> None:
            self.age = age
            self.db = DataBase()  # recoit notif si age change
     
     
    if __name__ == "__main__":
        moi = Personne(18)
        for _ in range(10):
            moi.age = random.randint(16, 21)
            print(f" Nouvel Age est: {moi.age}")
            print()
    $moi= ( !== ) ? : ;

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2011
    Messages : 45
    Points : 57
    Points
    57
    Par défaut
    Bonjour papajoker,

    Très élaborée votre proposition, mais, si j'ai bien compris son fonctionnement, on revient au point de départ et à la remarque de Sve@r relative à la cause de l'événement.
    J'ai donc mal formulé ma question:
    Soit un programme quelconque dans lequel j'utilise une variable i (pour une itération par exemple). Je voudrais savoir s'il est possible d'attacher un événement à cette variable, événement qui se déclenche chaque fois qu'elle change de valeur.
    Alors,bien évidemment si i est l'index d'une itération, je maîtrise la cause de son changement et je peux associer le callback à chaque boucle d'itération.
    Mais si ce n'est le cas, ne peut-on associer un objet à i et activer sur cet objet un écouteur du type OnChange comme cela existe dans d'autres langages ?

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Caplande Voir le message
    Mais si ce n'est le cas, ne peut-on associer un objet à i et activer sur cet objet un écouteur du type "OnChange" comme cela existe dans d'autres langages ?
    C'est le propos du pattern observer d'aider à réaliser ce type d'objet (ce qui a déjà été dit... et qui prend peut être du temps à comprendre). A défaut de le coder (avec des descriptor par exemple), vous pouvez chercher des bibliothèques externes qui réalisent ce pattern.

    Quelque part, le langage avec lequel est écrit une application importe peu pour l'utilisateur final. Il en est de même pour les techniques plus ou moins avancées utilisées pour l'écrire: l'important est que ça marche avec une consommation de ressources raisonnable => si vous pouvez faire sans le truc magique qui...c'est que le besoin n'est que non-technique.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 105
    Points : 4 455
    Points
    4 455
    Par défaut
    Citation Envoyé par Caplande Voir le message
    j'utilise une variable i (pour une itération par exemple). Je voudrais savoir s'il est possible d'attacher un événement à cette variable, événement qui se déclenche chaque fois qu'elle change de valeur.
    Tu n'a même pas joué avec mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Login:
        """ devrait exister une interface """
        def on_event(self, name, data):  # méthode obligatoire avec cette signature
            print("\t# update dans log ...")
    #...
        espionné = Personne(18)
        for espionné.age in range(5):
            pass
     
        espionné.db = Login()  # tu peux renommer "db" en OnChange
        for espionné.age in range(5):
            pass
    Si on veut écrire mon premier exemple en un peu plus générique, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    ...
    class Listen():
        value = EstObserve(instances=["on_change"])
        def __init__(self, value, observer=None) :
            self.value = value
            self.on_change = observer
     
    # fin du module "grande_oreille"
     
    class Login:
        def on_event(self, name, data):
            print("\t# print dans log ...", name, data)
     
    class Db:
        def on_event(self, name, data):
            print("\t# write dans Database ...", name, data)
     
     
    espionné = Listen(0, Login())
    for espionné.value in range(5):
        pass
    print("-----")
    espionné.on_change = Db()
    for espionné.value in range(5):
        pass

    Citation Envoyé par Caplande Voir le message
    je peux associer le callback
    .
    callback et évènement sont deux choses différentes, il faudrait être précis ! avec pyQt j'utilise des évènements mais certainement pas dans un simple script python.

    Mais si ce n'est le cas, ne peut-on associer un objet à i et activer sur cet objet un écouteur du type OnChange comme cela existe dans d'autres langages ?
    Donc en fait, tu poses des questions mais tu ne testes pas par toi même ? Il y a quand même un code python donné par le lien de Sve@r

    un écouteur du type OnChange comme cela existe dans d'autres langages ?
    Quel language ? A ma connaissance aucun par contre, on peut parfois trouver des choses type on_change() dans de très nombreuses bibliothèques (c'est la base en gui et html), ici c'est a toi d'écrire cette bibliothèque ou, utiliser une de disponible en python.

    utilise une variable i (pour une itération par exemple). événement qui se déclenche chaque fois qu'elle change de valeur
    rien compris à ta demande (Il serait 1000 fois plus simple de comprendre ton besoin réel). Si on fait une itération, on change de variable à chaque fois... ou alors, c'est ce que j'ai codé.
    Note : de plus en python nous avons quelques types immuables, il ne changent donc pas de valeur, mais sont remplacés.
    $moi= ( !== ) ? : ;

  10. #10
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Bonjour,
    Citation Envoyé par Caplande Voir le message
    Soit un programme quelconque dans lequel j'utilise une variable i (pour une itération par exemple). Je voudrais savoir s'il est possible d'attacher un événement à cette variable, événement qui se déclenche chaque fois qu'elle change de valeur.
    Alors,bien évidemment si i est l'index d'une itération, je maîtrise la cause de son changement et je peux associer le callback à chaque boucle d'itération.
    Mais si ce n'est le cas, ne peut-on associer un objet à i et activer sur cet objet un écouteur du type OnChange comme cela existe dans d'autres langages ?
    Les interfaces graphiques disposent de mécanisme permettant de lier un type de variable à un callback. Par exemple avec kivy, on peut créer un objet de type numérique(ou autre) et le lier à une fonction. Ça pourrait ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Truc(Label):
        c = NumericProperty(0) 
        def __init__(self):
            super().__init__()
            self.bind(c=self.callback) 
     
        def callback(self,instance, value):
            #est appellé à chaque fois que self.c change de valeur
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Caplande Voir le message
    Alors,bien évidemment si i est l'index d'une itération, je maîtrise la cause de son changement et je peux associer le callback à chaque boucle d'itération.
    C'est effectivement une remarque inévitable au vu de ton exemple

    Citation Envoyé par Caplande Voir le message
    Mais si ce n'est le cas, ne peut-on associer un objet à i et activer sur cet objet un écouteur du type OnChange comme cela existe dans d'autres langages ?
    On en revient aux fondamentaux. Si ce n'est pas le cas, déjà pourquoi ce ne sera pas le cas ? Quelle situation pourrait amener une variable à changer sans que tu ne puisses identifier la cause de ce changement et donc associer ladite cause à ce "onChange" ? Parce que de mon côté j'essaye d'imaginer des cas mais je n'en trouve pas.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #12
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Hello,

    Encore une fois la question du PO n'est pas claire, mais elle le devient beaucoup plus dans sa réponse suivante, et à mon sens la réponse donnée par @josmiley semble être une des solutions que j'avais imaginé.

    Soit un programme quelconque dans lequel j'utilise une variable i (pour une itération par exemple). Je voudrais savoir s'il est possible d'attacher un événement à cette variable, événement qui se déclenche chaque fois qu'elle change de valeur.
    Alors,bien évidemment si i est l'index d'une itération, je maîtrise la cause de son changement et je peux associer le callback à chaque boucle d'itération.
    Mais si ce n'est le cas, ne peut-on associer un objet à i et activer sur cet objet un écouteur du type OnChange comme cela existe dans d'autres langages ?
    En étayant les propos de @josmiley, je voyais bien ce type d'écouteur sous forme de @property.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    import random
     
    class ValueChangeListener:
        def __init__(self, initial_value=None):
            self._value = initial_value
     
        @property
        def value(self):
            return self._value
     
        @value.setter
        def value(self, new_value):
            if new_value != self._value:
                self._value = new_value
                self.on_value_change(new_value)
     
        def on_value_change(self, new_value):
            print(f"Value changed to: {new_value}")
     
     
    first_value, *values = [random.randint(1, 10) for _ in range(5)]
    listener = ValueChangeListener(first_value)
    for i in values:
        listener.value = i
     
    # Value changed to: 6
    # Value changed to: 5
    # Value changed to: 6
    # Value changed to: 9
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  13. #13
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    En étayant les propos de @josmiley, je voyais bien ce type d'écouteur sous forme de @property.
    Oui bien sûr. Tu utilises les propriétés syntaxiques de Python et de ses setters pour réécrire l'affectation. Un lecteur peu au fait de ces subtilités verra dans listener.value = i une simple affectation classique alors qu'en réalité ça appelle une fonction de façon cachée, fonction que tu peux donc décorer à loisir pour y rajouter tous les traitements que tu veux. Certes ça répond à la problématique "comment checker une affectation" (parce que "changer de valeur" ça se traduit par "affecter une nouvelle valeur à la place de l'ancienne")... mais ça ne répond pas à la problématique que j'ai soulevée (et qui me semble intéressante) : quelles circonstances peuvent amener un évènement à faire modifier une variable sans que l'on ne puisse alors surveiller l'évènement au lieu de surveiller la variable ? Parce que je sens que si le PO ne peut pas répondre à cette question, cela pourrait signifier qu'il a mal perçu certains points de son projet.

    Dit autrement : quelle que soit la ligne du code où il est écrit cette fameuse affectation de cette fameuse variable, on pourra toujours y rajouter une instruction avant (ou après), instruction contenant le code (ici un callback) que l'on veut associer à cette affectation.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 126
    Points : 1 636
    Points
    1 636
    Par défaut
    pour info, il a trouvé (me semble-t-il) une réponse satisfaisante à sa demande sur https://openclassrooms.com/forum/sujet/tkinter-fe9ed

  15. #15
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Ah ben oui évidemment !!! Mais sa question là-bas n'a rien, mais alors rien du tout à voir avec celle d'ici.
    Là bas il veut partir de Tk, faire exécuter un programme externe dans une boucle de traitement de n éléments (n photos) et dans Tk afficher le traitement en cours (style "traitement photo 1", "traitement photo 2" etc). C'est totalement à l'ouest de "surveiller une variable" quoi !!!
    En fait on se trouve dans un cas typique de problème XY. Au lieu de partir sur "comment dans tk afficher le déroulé d'un traitement externe" il est parti sur des "callback sur variables etc" bref...
    Nom : projet.png
Affichages : 80
Taille : 15,6 Ko

    Et le plus triste c'est que son souci fait partie des soucis connus des GUI (comment mettre à jour une GUI lors de tâches externes) que Qt permet de résoudre via les Qthread. Certainement que Tk permet une solution analogue (à base là aussi de thread probablement)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  16. #16
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 105
    Points : 4 455
    Points
    4 455
    Par défaut
    Merci umfred

    Si je comprends (merci Caplande de nous avoir jamais donné le contexte), il voulait simplement faire une barre de progression (d'un traitement de photos)

    Passer a Tk est quand même extrême et des solutions dans un terminal existent. Si l'utilisation d'une interface graphique n'est pas un handicap pour le traitement, alors ok.
    $moi= ( !== ) ? : ;

  17. #17
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Si l'utilisation d'une interface graphique n'est pas un handicap pour le traitement, alors ok
    Au départ il n'était pas question d'interface graphique, d'ailleurs sur l'autre forum il le précise. Qui puis est il indique se sentir obligé d'utiliser une IHM...

    Bref, le PO n'a jamais proposé de codes indiquant que l'une ou l'autre des solutions proposées ne correspondaient pas à ce qu'il souhaitait et surtout pourquoi ça ne correspondait pas, ce qui rend difficile la compréhension de son problème.

    C'est un problème XY peut-être, moi quand je vois pas de code, je me sens un peu baladé par les belles paroles du PO !
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  18. #18
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2011
    Messages : 45
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Tu n'a même pas joué avec mon code
    ......
    Je me sens écrasé par tant de savoir... mais je m'accroche

Discussions similaires

  1. Evénement sur le changement de valeur d'une variable
    Par kimcharlene dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 17/08/2012, 20h56
  2. Evenement sur changement d0une valeur d'une variable
    Par Destiny dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/04/2008, 09h28
  3. Réponses: 8
    Dernier message: 29/03/2007, 14h48
  4. [VB.NET]Test sur changement de valeur d'une variable
    Par shinji_rem dans le forum Windows Forms
    Réponses: 9
    Dernier message: 29/11/2006, 15h53
  5. Intercepter le changement de valeur d'une variable
    Par Captain_JS dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/01/2005, 08h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo