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 :

Qu'est-ce qui ne va pas avec ce programme ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut Qu'est-ce qui ne va pas avec ce programme ?
    Encore bonjour à tous. Je poursuis mon apprentissage de Python, et, tout impatient que je sois, je n'avance pas vite.

    J'ai recopié hier ce programme je ne sais plus où (sur Internet, quand même) :

    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
     
    # Petit exercice utilisant la bibliothèque graphique Tkinter
     
    from Tkinter import *
    from random import randrange
     
    # --- définition des fonctions gestionnaires d'événements : ---
    def drawline():
        "Tracé d'une ligne dans le canevas can1"
        global x1, y1, x2, y2, coul
        can1.create_line(x1,y1,x2,y2,width=2,fill=coul)
     
        # modification des coordonnées pour la ligne suivante :
        y2, y1 = y2+10, y1-10
     
    def changecolor():
        "Changement aléatoire de la couleur du tracé"
        global coul
        pal=['purple','cyan','maroon','green','red','blue','orange','yellow']
        c = randrange(8)             # => génère un nombre aléatoire de 0 à 7
        coul = pal[c]
     
    #------ Programme principal -------
     
    # les variables suivantes seront utilisées de manière globale :
    x1, y1, x2, y2 = 10, 190, 190, 10             # coordonnées de la ligne
    coul = 'dark green'                           # couleur de la ligne
     
    # Création du widget principal ("maître") :
    fen1 = Tk()
    # création des widgets "esclaves" :
    can1 = Canvas(fen1,bg='dark grey',height=200,width=200)
    can1.pack(side=LEFT)
    bou1 = Button(fen1,text='Quitter',command=fen1.quit)
    bou1.pack(side=BOTTOM)
    bou2 = Button(fen1,text='Tracer une ligne',command=drawline)
    bou2.pack()
    bou3 = Button(fen1,text='Autre couleur',command=changecolor)
    bou3.pack()
     
    fen1.mainloop()              # démarrage du réceptionnaire d'événements
     
    fen1.destroy()               # destruction (fermeture) de la fenêtre
    Clairement, il était prévu pour Python 2 : j'ai donc fait deux modifs :

    - ajouté la ligne # -*- coding: utf8 -*- au début,
    - mis une minuscule à tkinter

    Mais ça ne marche quand-même pas : si je dis d'ouvrir avec IDLE, ça ne s'ouvre pas, ça ne fait rien !! ; si je double clique sur le .py que j'ai créé chez moi (forcément, hein, pour le modifier...) je vois une fenêtre qui s'ouvre et qui se referme avant que j'ai rien pu y voir ; et si j'ouvre une fenêtre de commande que que je le lance avec Python, je vois ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    D:\Projets\Python>python Cannevas.py
    Traceback (most recent call last):
      File "Cannevas.py", line 6, in <module>
        from tkinter import *
      File "D:\Projets\Python\tkinter.py", line 8, in <module>
        fenetre = Tk()
    NameError: name 'Tk' is not defined
    Or il n'y a pas de ligne : "fenetre = Tk()", ni au numéro 8 ni ailleurs dans ce programme là (la fenêtre est définie sous le nom "fen1" à la ligne 31 !)

    Par contre, j'ai fait tourner récemment un programme à la structure tout à fait similaire, avec l'import tkinter, et bel et bien une ligne "fenetre = Tk()" (mais c'est à la ligne 105 !). Par acquis de conscience, je l'ai essayé, et il marche exactement comme je l'espère.

    Si quelqu'un peut m'expliquer ce qui a bien pu se passer, je serai bien soulagé, car, pour le moment, je trouve que Python me fait des blagues pas drôles du tout.

    Merci d'avance.

    AMIcalement.

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut
    Arrêtez tout ! J'ai compris ! Ahhhh ! j'aurais dû lire chaque mot de chaque ligne !

    Au cours de mes essais passée, j'ai créé un programme .py que j'ai (naïvement !) appelé "tkinter.py" (ben normal; hein, je voulais prendre tkinter en main !) Et il y a bien une ligne 8 "fenetre = Tk()" !

    Faites excuses, vos honneurs.

    AMIcalement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Qu'est ce qui ne va pas dans ma requête ???
    Par Higestromm dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/09/2018, 21h50
  2. Réponses: 0
    Dernier message: 27/04/2015, 00h38
  3. Réponses: 3
    Dernier message: 25/04/2012, 10h48
  4. qu'est ce qui ne va pas avec cette procédure ?
    Par Jcpan dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 19/01/2009, 09h39
  5. qu'est ce qui ne va pas avec cette requête
    Par fk04 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/08/2006, 09h01

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