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

Tkinter Python Discussion :

message NameError non résolu


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Par défaut message NameError non résolu
    bonjour à tous,
    je débute python, j'ai un message NameError sur un script qui n'est pas compliqué
    voici le code, et merci pour votre aide.

    Code python : 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
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
     
    from tkinter import*
     
     
    def carre(a,b):
        can.create_rectangle(x1,0,x2,25,fill='blue')
     
    i=0
    x1,x2=0,25
    while i<5:
        carre(x1,x2)
        x1+=50
        x2+=50
        i+=1
     
    fen=Tk()
    can=Canvas(fen,bg='white',height=400,width=400)
    fen.mainloop()

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    et bien sûr il faut deviner où et sur quel terme ...

    comme je suis sympa
    c'est peut-être Tkinter à la place de tkinter
    de plus la boucle est mal placée

    il faut connaître les bases avant de s'attaquer à une GUI ...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Par défaut
    bonjour josmiley,

    je travaille sur python 3.2.1, et si je ne me trompe il n'y a plus besoin de majuscule lorsque l'on importe un module.

    Et concernant la boucle, elle ne fait pas partie de la fonction mais du programme principal, je n'ai fait que reprendre des exemples du livre de swinnen mais en modifiant qq peu.

    voici le message :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Traceback (most recent call last):
      File "C:\Python32\damier.py", line 13, in <module>
        carre(x1,x2)
      File "C:\Python32\damier.py", line 8, in carre
        can.create_rectangle(x1,0,x2,25,fill='blue')
    NameError: global name 'can' is not defined

    merci à toi

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 : 4 062
    Par défaut
    Bah il a tout de même un peu raison

    Tu n'exécuterais pas ta fonction carre avant de déclarer ton Canvas?

    Enfin je pose la question, mais je sais que c'est ça...

    Et puis tes variables a et b dans la fonction carre ne servent à rien, tu devrais revoir les fonctions.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Par défaut
    merci à vous deux,
    viens de modifier le script "ça marche!!!"
    je vais revoir le pourquoi du comment.

    voici le script.
    Code python : 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
     
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
     
    from tkinter import*
     
    fen=Tk()
    can=Canvas(fen,bg='white',height=250,width=250)
    can.pack(side=LEFT)
     
    def carre(x1,x2):
        can.create_rectangle(x1,0,x2,25,fill='blue')
     
    i=0
    x1,x2=0,25
    while i<5:
        carre(x1,x2)
        x1+=50
        x2+=50
        i+=1
     
    fen.mainloop()

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 : 4 062
    Par défaut
    Ta fonction au milieu c'est moche. Place ta fonction au début de ton script.

  7. #7
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par kechor Voir le message
    je vais revoir le pourquoi du comment.
    Le pourquoi du comment il est là.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def carre(a,b):
        can.create_rectangle(x1,0,x2,25,fill='blue')
     
    i=0
    x1,x2=0,25
    while i<5:
        carre(x1,x2)
        x1+=50
        x2+=50
        i+=1
     
    fen=Tk()
    can=Canvas(fen,bg='white',height=400,width=400)
    La boucle while utilise la fonction carre qui crée des rectangles dans un canvas qui n'est créé qu'après. Le nom 'can' (can = Canvas...) n'existe pas lorsque le while est exécuté donc lorsque Python trouve can.create_rectangle(x1,0,x2,25,fill='blue') dans carre > NameError: global name 'can' is not defined.

    @+

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

Discussions similaires

  1. Message confirmation non résolu
    Par mbar dans le forum VBA Access
    Réponses: 6
    Dernier message: 03/02/2009, 23h32
  2. Jeton non résolu???
    Par vdumont dans le forum C++
    Réponses: 9
    Dernier message: 14/03/2006, 13h09
  3. Message Jointure non supportée
    Par Daniel MOREAU dans le forum Access
    Réponses: 6
    Dernier message: 26/02/2006, 18h03
  4. LNK2019 symbole externe non résolu
    Par devmat dans le forum MFC
    Réponses: 3
    Dernier message: 04/01/2006, 00h14
  5. [Excel] Message "Interface non supportée"
    Par Hathor dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 20/09/2005, 17h09

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