Partage
  • Partager sur Facebook
  • Partager sur Twitter

Quelques questions concernant Python...

    25 juillet 2011 à 17:07:41

    Bonjour à tous!

    Voilà, je m'exerce à python, en utilisant l'interface graphique Tkinter, et j'ai quelques questions concernant python et Tkinter (justement :p ):

    N'y-a-t il pas possibilité de rafraîchir la page, de détruire tous les éléments d'une fonction, ou de la boucle principale d'un coup? Exemple avec ce code (dites moi ce que vous en pensez si vous voulez :p ):

    from Tkinter import *
    
    def analyse():
    	global wrong
    	if area.get()=='kangoo':
    		if wrong!=0:
    			wrong.destroy()
    		intro.destroy()
    		area.destroy()
    		validate.destroy()
    		Label(window, text='Mot de passe ok').pack()
    	else:
    		wrong=Label(window, text='Mot de passe éronné')
    		wrong.pack()
    
    window=Tk()
    window.title('Password locker')
    window.minsize(height=300, width=500)
    window.maxsize(height=300, width=500)
    window.resizable(height=NO, width=NO)
    
    intro=Label(window, text='Veuillez entrer le mot de passe:')
    intro.pack()
    area=Entry(window)
    area.pack()
    validate=Button(window, text='Ok', command=analyse)
    validate.pack()
    
    window.mainloop()
    


    N'y a-t-il pas moyen donc, de rafraichir la page si le mot de passe est bon, dans la fonction analyse()?
    De plus, ne serait-il pas possible, si le mot de passe est éronné, d'afficher le label wrong seul, de le packer, puis de packer un bouton 'Retour', qui ramènerait à la mainloop() de la fenêtre? J'ai essayé plusieurs combines pour y arriver, mais rien n'y fait.

    Je doute que Python/Tkinter soit aussi limité, et je suis pratiquement certain que c'est parce que je manque de connaissances :) .

    Des réponses? Des idées? Des solutions?

    Merci de votre aide les zéros :) .
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      25 juillet 2011 à 17:43:03

      window.destroy()?

      ou tu listes tes objets

      liste = [intro, wrong, validate] # etc...
      for objet in liste:
          objet.destroy()
      


      En passant je doute que la fonction global est une grande utilité à moins que le code soit incomplet.
      • Partager sur Facebook
      • Partager sur Twitter
        25 juillet 2011 à 19:37:46

        window.destroy() détruit la fenêtre, ne la rafraîchit pas.
        Ce que j'aimerais faire, c'est si le pass est faux, on rafraichit tout, on pack juste un label avec un bouton retour, et lorsque on clique sur ce bouton, on revient dans la mainloop(), l'écran "d'accueil" en quelque sorte.


        Des propositions?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          25 juillet 2011 à 20:49:19

          pour rafraichir il y a la fonction update()

          Citation

          De plus, ne serait-il pas possible, si le mot de passe est éronné, d'afficher le label wrong seul, de le packer, puis de packer un bouton 'Retour', qui ramènerait à la mainloop() de la fenêtre? J'ai essayé plusieurs combines pour y arriver, mais rien n'y fait.



          En gros ce que tu souhaites c'est une fenêtre d'avertissement comme quoi le pass est faux, il faudrait donc supprimer ce qu'il y a à l'intérieur du entry (fonction delete)

          • Partager sur Facebook
          • Partager sur Twitter
            25 juillet 2011 à 20:52:34

            j'ai lu ce sujet qui se rapproche je pense de ce que je cherche à faire, sortir d'un mainloop, ou bien destroy une fenêtre pour en ouvrir directe une autre.

            Par exemple comme un utilitaire d'installation, avec des boutons suivant, précédent, et à la fin terminer. Voilà c'est ca ce que je veut réussir à faire. Il y a bien un moyen? (je suis calme hein :p )
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              25 juillet 2011 à 21:00:53

              C'est possible mais faudra te mettre à la POO, bien trop pourri de le faire sans

              Si maintenant tu veux le faire sans amuse toi bien, 2 fenêtres à la rigueur ok (et encore...)

              • Partager sur Facebook
              • Partager sur Twitter
                25 juillet 2011 à 21:02:00

                Et la POO python, ca s'apprend ou?

                J'ai jamais vraiment compris le terme programmation orientée objet, c'est bien ca?
                Ca veut dire quoi concrètement? Qu'est-ce qu'on fait avec, qu'est-ce qu'on ne peut faire sans?
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  25 juillet 2011 à 21:03:10

                  Tu as déjà attaquer la POO depuis longtemps, mais tu ne le sais pas, on va dire que cette notion arrive à partir du moment où tu apprends les classes.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 juillet 2011 à 21:05:12

                    C'est à dire? Tu n'as pas un petit exemple justement de fenêtre avec un bouton suivant?
                    A quoi servent les classe.
                    Je programme depuis des années en plusieurs langages, mais je ne m'y suis jamais vraiment mis à fond, là j'aimerais, mais je ne sais même pas ce que sont les classes en Python (je précise).
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      25 juillet 2011 à 21:20:54

                      from tkinter import *
                      
                      class Fen(Tk):
                          def __init__(self, master=None):
                              Tk.__init__(self, master)
                              self.bouton = Button(self, text="Suivant", command=self.detruire).pack()
                              self.mainloop()
                          def detruire(self):
                              self.destroy()
                      
                      fen_1 = Fen()
                      fen_2 = Fen()
                      


                      Pour les classes, tu peux chercher dans le forum, soit en C++ (pour le principe) soit en python pour le code.

                      On peut prendre la classe comme un plan d'un objet que tu peux fabriquer autant de fois que tu le souhaites.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 juillet 2011 à 21:26:16

                        J'ai testé ce code, il créé une fenêtre avec un button suivant.
                        Lorsque je clique sur ce bouton, la fenêtre se détruit, et en réapparaît une autre, avec le même bouton suivant.
                        On re-clique, et la fenêtre se détruit.

                        Mais n'est-il pas possible de coder ce procédé à l'intérieur d'une même fenêtre. Dans ton exemple de code, on voit clairement la fenêtre se détruire, puis une autre identique apparaître. Il suffit de bouger uen fenêtre de place pou s'en rendre compte.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          25 juillet 2011 à 21:34:50

                          Citation

                          Mais n'est-il pas possible de coder ce procédé à l'intérieur d'une même fenêtre



                          Si mais ça rend plus complexe le code, le rallonge, augmente la difficulté dans la maintenance du code et pour exactement le même résultat.

                          Après on peut détecter l'endroit où se trouve la fenêtre pour en créer une autre exactement au même endroit. :)

                          • Partager sur Facebook
                          • Partager sur Twitter
                            25 juillet 2011 à 21:37:38

                            Tu m'intéresses jeune padawan.

                            Et comment faire ca?

                            Par quelle fonction mirambolante ce procédé va-t-il s'avérer possible?
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              25 juillet 2011 à 22:31:06

                              from tkinter import *
                              
                              class Fen(Tk):
                                  def __init__(self, master=None):
                                      Tk.__init__(self, master)
                                      self.geometry('60x40+40-40')
                                      self.bouton = Button(self, text="Suivant", command=self.detruire).pack()
                                      self.mainloop()
                                  def detruire(self):
                                      self.destroy()
                              
                              fen_1 = Fen()
                              fen_2 = Fen()
                              
                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 juillet 2011 à 12:08:31

                                Donc ca c'est de la POO?

                                Mais là on voit toujours la fenêtre apparaître/disparaître...
                                J'ai testé la fonction update(), le programme refuse de se lancer...

                                Un exemple d'utilisation?

                                Merci de ton aide :) .
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  26 juillet 2011 à 22:26:07

                                  Citation

                                  Donc ca c'est de la POO?



                                  hein?

                                  Citation

                                  Mais là on voit toujours la fenêtre apparaître/disparaître...



                                  Normal j'ouvre 2 fenêtres, si tu veux te taper le code pour une seule fenêtre, tu te tapes la doc tkinter et tu apprends la POO...

                                  Citation

                                  J'ai testé la fonction update(), le programme refuse de se lancer...



                                  Je veux voir le code.

                                  Citation

                                  Un exemple d'utilisation?



                                  Pour quoi ? update?

                                  Citation

                                  Merci de ton aide



                                  Ouais mais faut pas pousser, tu cherches aussi un peu de ton côté, et puis te montrer du code style POO, ça te sert à quoi si tu ne connais pas un peu les bases.

                                  Allez gars sort toi un peu les doigts du ... ;)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    27 juillet 2011 à 16:19:12

                                    Du cul? N'ayons pas peur des mots. Je ne les ai pas dedans de toutes façons. Je me documente beaucoup, c'est juste que c'est sympa d'avoir quelqu'un qui donne en plus des exemples.

                                    J'ai cherché comment faire l'exemple suivant au sein d'une seule fenêtre, pas trouvé.

                                    Bref.
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Quelques questions concernant Python...

                                    × 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