Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation de tkinter

Sujet résolu
    20 janvier 2020 à 19:36:23

    Bonsoir, j'ai un exercice a faire avec tkinter qui consiste a reproduire le logo des jeux olympiques.

    Avec IDEL j'ai ce message d'erreur : SyntaxError: multiple statements found while compiling a single statement

    Voici mon code:

    #-----------Phase D'initialisation du Progamme---------
    
    from tkinter import *
    
    def draw_circle1():
        can1.create_oval(x1=20,y1=20,x2=300,y2=300, width=2, outline="blue")
    
    def draw_circle2():
        can1.create_oval(x1=170,y1=170,x2=450,y2=450, width=2, outline="yellow")
    
    def draw_circle3():
        can1.create_oval(x1=320,y1=20,x2=600,y2=300, width=2, outline="black")
    
    def draw_circle4():
        can1.create_oval(x1=470,y1=170,x2=750,y2=450, width=2, outline="green")
    
    def draw_circle5():
        can1.create_oval(x1=620,y1=20,x2=900,y2=300, width=2, outline="red")
    
    
    
        #----------- Phase Centrale du Programme----------
    
        fenetre=Tk()
    
        can1=Canvas(fenetre,bg='white',height=500,width=1000)
        can1.pack(side=LEFT)
        bou1=Button(fenetre,text='Circle one.',command=draw_circle1)
        bou1.pack()
        bou2=Button(fenetre,text='Circle two.',command=draw_circle2)
        bou2.pack()
        bou3=Button(fenetre,text='Circle three.',command=draw_circle3)
        bou3.pack()
        bou4=Button(fenetre,text='Circle four.',command=draw_circle4)
        bou4.pack()
        bou5=Button(fenetre,text='Circle five.',command=draw_circle5)
        bou5.pack()
        bou6=Button(fenetre,text='Exit',command=fenetre.quit)
        bou6.pack()
    
        #----------Phase de terminaison du Programme---------
    
        fenetre.mainloop()
    
        fenetre.destroy()
        
    
    
    

    Merci pour votre aide :)

    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2020 à 19:44:43

      La "phase centrale" est mal indentée.

      Sinon pour exécuter du code il ne faut pas le copier/coller dans l'interpréteur.
      Il faut lancer le fichier avec la commande "py fichier.py" (ou python3 fichier.py sur linux).

      -
      Edité par thelinekioubeur 20 janvier 2020 à 19:45:59

      • Partager sur Facebook
      • Partager sur Twitter
        20 janvier 2020 à 20:25:43

        A quel moment la "phase centrale" est mal indentée svp ?

        Car sur un exercice précédant, la "phase centrale" était indentée de la même façon.

        Merci Cordialement

        • Partager sur Facebook
        • Partager sur Twitter
          20 janvier 2020 à 20:37:56

          Eh bien dans l'exercice précédent c'était aussi mal indenté. Ça se passe entre la ligne 24 et 45 !
          • Partager sur Facebook
          • Partager sur Twitter

          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)

            20 janvier 2020 à 20:51:19

            Super le GUI s'ouvre mais lorsque que je clique sur le bouton "Circle 1" je reçois ce message :

            Traceback (most recent call last):
              File "C:\Users\Emili\Documents\PYTHON\lib\tkinter\__init__.py", line 1883, in __call__
                return self.func(*args)
              File "c:/Users/Emili/Documents/Mes travaux avec Pyton/Visual Studio Python/tkinter01.py", line 7, in draw_circle1
                can1.create_oval(x1=20,y1=20,x2=300,y2=300, width=2, outline="blue")
              File "C:\Users\Emili\Documents\PYTHON\lib\tkinter\__init__.py", line 2793, in create_oval
                return self._create('oval', args, kw)
              File "C:\Users\Emili\Documents\PYTHON\lib\tkinter\__init__.py", line 2766, in _create
                cnf = args[-1]
            IndexError: tuple index out of range
            Traceback (most recent call last):
              File "c:/Users/Emili/Documents/Mes travaux avec Pyton/Visual Studio Python/tkinter01.py", line 46, in <module>
                fenetre.destroy()
              File "C:\Users\Emili\Documents\PYTHON\lib\tkinter\__init__.py", line 2303, in destroy
                self.tk.call('destroy', self._w)
            _tkinter.TclError: can't invoke "destroy" command: application has been destroyed

            • Partager sur Facebook
            • Partager sur Twitter
              20 janvier 2020 à 21:10:42

              Ligne 45, cette ligne n'a rien à faire là, un programme avec le framework Tkinter se termine toujours avec la méthode mainloop qui est la boucle événementielle, donc en attente des interactions entre utilisateur et interface.

              Tu devrais suivre des cours avec Tkinter -> Voir ICI pour un cours accéléré en vidéo par exemple et sans vidéo ICI.

              -
              Edité par fred1599 20 janvier 2020 à 21:15:24

              • Partager sur Facebook
              • Partager sur Twitter

              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)

                21 janvier 2020 à 9:21:08

                Merci mais je ne trouve toujours pas la solution a mon problème.

                Ou sont mes erreurs ?

                • Partager sur Facebook
                • Partager sur Twitter
                  21 janvier 2020 à 9:27:01

                  Fred viens de te le dire

                  -
                  Edité par thelinekioubeur 21 janvier 2020 à 9:27:52

                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 janvier 2020 à 15:23:55

                    J’ai corrigé l’indentation mais ça ne fonctionne pas
                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 janvier 2020 à 15:54:56

                      fait voir le code corrigé et le message d'erreur

                      -
                      Edité par thelinekioubeur 21 janvier 2020 à 15:55:09

                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 janvier 2020 à 16:31:29

                        PetitGeekPY a écrit:

                        Merci mais je ne trouve toujours pas la solution a mon problème.

                        Ou sont mes erreurs ?

                        L'erreur est dans .create_oval(x1=20,y1=20,x2=300,y2=300,...).

                        Les coordonnées doivent être passés comme paramètre positionnels (.create_oval(20, 20, 300, 300,...) et non comme paramètres nommés (x2 = 300).

                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 janvier 2020 à 23:33:06

                          Magnifique !

                          Merci beaucoup mps tout fonctionne à la perfection :D

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Utilisation de tkinter

                          × 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