Partage
  • Partager sur Facebook
  • Partager sur Twitter

recupérer la valeur d'une fonction pour une autre

Sujet résolu
    14 mai 2015 à 18:56:28

    salut je cherche comment faire pour récupérer la valeur d'un def pour êtres utiliser dans un autre. 

    quant je fait un j'affiche ma variable la ou je veut l'utiliser il me fait 'False' alors qu'elle a une donner dans mon def utiliser avent.

    pour info les def sont exécuter quant je clique sur des bouton et le premier est un set item d'une table widgets (importe d'une interface graphique sur pyqt)

    (je suis sur python 3.4)

    -
    Edité par lekev262 14 mai 2015 à 18:57:15

    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2015 à 19:18:32

      Un exemple (simple) stp.
      • Partager sur Facebook
      • Partager sur Twitter
      Précepte: Le mieux est l'ennemi du bien
        14 mai 2015 à 19:25:41

        oui voila une petit party du code

        self.tableMangalire.itemClicked.connect(self.slotItemClicked)#clique dans mon tableau
        
        self.pushButtonPlus.clicked.connect(self.Plus)
        
        def slotItemClicked(self, item):
            objet = item.text()#objet apprend l’élément dans le tableau
        
        def Plus(self,objet):
            self.cur.execute("UPDATE MangaLire SET ch = ch+1 where nom='{0}'".format(objet))#objet = False
            self.cur.execute("UPDATE MangaLu SET ch = ch+1 where nom='{0}'".format(objet))
            self.connex.commit()
            self.refrech()
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          14 mai 2015 à 19:38:54

          >>> def func1(x):
          ...     return x/2
          ... 
          >>> def func2(y):
          ...     a = func1(y)
          ...     return y + a
          ... 
          >>> func2(5)
          7.5
          
          • Partager sur Facebook
          • Partager sur Twitter
            14 mai 2015 à 19:40:29

            j'ai beau ajouter return sa ne marche pas (ou je ne sais pas m'en servir ... a voir)
            • Partager sur Facebook
            • Partager sur Twitter
              14 mai 2015 à 19:48:48

              Tu peux enregistrer ta variable objet comme attribut d'instance:

              #En créant un attribut d'instance:
              self.objet = ""
              
              def slotItemClicked(self, item):
                  self.objet = item.text()
               
              def Plus(self,objet=None):
                  if not objet:
                      objet = self.objet
                  self.cur.execute("UPDATE MangaLire SET ch = ch+1 where nom='{0}'".format(objet))#objet = False
                  self.cur.execute("UPDATE MangaLu SET ch = ch+1 where nom='{0}'".format(objet))
                  self.connex.commit()
                  self.refrech()



              • Partager sur Facebook
              • Partager sur Twitter
              Précepte: Le mieux est l'ennemi du bien
                14 mai 2015 à 19:50:04

                "j'ai beau ajouter return sa ne marche pas"

                Quel code utilises-tu dans ce cas?

                • Partager sur Facebook
                • Partager sur Twitter
                Précepte: Le mieux est l'ennemi du bien
                  14 mai 2015 à 19:57:29

                  OUI sa marche :D un grand merci Olygrim! j'ai enfin fini mon programme ! :D

                  je fait return objet et sa ne fonctionnais pas après j'ai essayer de le faire appeler dans mon def Plus mais il na pas les item alors sa ne fonctionnais toujours pas ...

                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 mai 2015 à 22:00:51

                    help j'ai mon programme qui crach
                    self.objet = ""
                    self.tableMangalu.itemClicked.connect(self.slotItemClicked)#clique dans ma table
                    self.tableMangalu.itemChanged.connect(self.slotItemChanged)#modifie ma table a la main
                    
                    def slotItemClicked(self, item):
                        self.objet = item.text()
                    
                    def slotItemChanged(self, item):
                        name=item.text()
                        self.cur.execute("UPDATE MangaLu   SET nom = '{0}' where nom = '{1}'".format(name,self.objet))#modifie le nom 

                    (note je montre pour une table mais j'en ai 3 :D)

                    edit après avoir désactiver la requête le programme crach toujours

                    -
                    Edité par lekev262 14 mai 2015 à 22:14:21

                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 mai 2015 à 22:30:08

                      Il me semble que tu ne peux pas mélanger les méthodes pythons avec les requêtes SQL. Autrement dit, les {} ne sont pas acceptés. Je te conseille le cours de Swinnen pour plus de détails. La bonne écriture serait quelque chose comme:

                      def slotItemChanged(self, item):
                          name=item.text()
                          requete = "UPDATE MangaLu SET nom = (?) where nom = (?)"
                          self.cur.execute(requete, (name,self.objet))

                      Un truc comme ça je pense ^^

                      Edit: Peut être n'y a t-il pas besoin des (): "UPDATE MangaLu SET nom = ? where nom = ?". A tester.

                      Edit2: Ou peut-être faut-il un tuple: "UPDATE MangaLu SET nom = (?,) where nom = (?,)". Dis-moi si yen a une qui fonctionne.

                      -
                      Edité par Olygrim 14 mai 2015 à 22:49:28

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Précepte: Le mieux est l'ennemi du bien
                        19 mai 2015 à 12:16:20

                        non se n'ai pas la requête qui me fait cracher le programme j'ai trouver mon erreur mais je ne sais pas comment l'arengé dans se que je veut.

                        note tu peu tester avec un print comme en dessous sa marche

                        print("UPDATE MangaLu   SET nom = '{0}' where nom = '{1}'".format('toto','tata'))

                        la requête marche implique mais il crach du faite que dans mon interface j'ai activer l'option itemDoubleClicked (de mémoire) alors que je fais un itemChanged dans me programme donc conflit (logique). mais je veux pouvoir modifier ma cellule après un double clique et non au premier (sais se qui se passe quant je change dans intercepte graphique itemDoubleClicked par itemChanged) s'il y a une possibilité de modifier au deuxième clique et nom au premier je suis preneur sinon je vais le mètre de coter.

                        (je c'est c pas simple a comprendre mais c'est pas facile a expliquer se qui se passe et se que je veux)

                        -
                        Edité par lekev262 19 mai 2015 à 13:12:42

                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 mai 2015 à 16:25:25

                          Ce serait plus simple si tu nous donnais tout simplement ton message d'erreur. Sinon ce serait cool que tu fasses un petit effort pour ton français.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 mai 2015 à 19:55:38

                            il crach (en mode ne répond pas) j'ai pas de message d'erreur

                            je vais voir avec mon prof demain si il a une proposition sinon je laisse sa de coter.

                            (dsl pour les faute)

                            • Partager sur Facebook
                            • Partager sur Twitter

                            recupérer la valeur d'une fonction pour une autre

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown