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 :

Soucis avec Scale et command


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 7
    Par défaut Soucis avec Scale et command
    Bonjour,
    J'ai fait un code qui nécessite le mouvement d'un curseur sur scale. Cependant mon message d'erreur est que la fonction "temps" n'est pas définie. Je ne comprend pas pourquoi. Merci !

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    from tkinter import * 
    from random import *
    #création du monde quadrillé
    #création de la grille vide
    def damier() :
        ligne_vert()
        ligne_hori()
     
    def ligne_vert() :
        x = 0
        while x <= 750 :
            C.create_line(x, 0, x, 600)
            x += 15
     
    def ligne_hori() :
        y = 0
        while y <= 600 :
            C.create_line(0, y, 750, y)
            y += 15
     
    fen=Tk()
    fen.title('Trajet du plastique dans les océans')
    fen.geometry("750x800")
    C=Canvas(fen, bg='white', width = 750, height = 600)
     
    #fonction test pour scale
     
    def random () :
        n = randint (0, 585)
        m = randint (0, 735)
        if n % 15 == 0 and m % 15 == 0 and n >= 9 and m >= 9 and C.create_rectangle(n+2, m+2, n+12, m+12, fill='white') :
            C.create_rectangle(n+3, m+3, n+11, m+11, fill='black')
        else : 
            random()
     
    def temps () :
        n = randint (0, 585)
        m = randint (0, 735)
        C.create_rectangle(n, m, n+9, m+9, fill='black')
        alleradroite (n, m)
     
    def alleradroite (n,m) :
        C.create_rectangle(n+15, m, n+24, m+9, fill='black')
     
     
    #remplissage de la grille pour les terres
    #australie
     
    C.create_rectangle(630,375,645,465, fill='black')
    C.create_rectangle(645,420,660,450, fill='black')
     
    Valeur=StringVar(fen)
    Scale (fen,orient='horizontal', from_=0, to=365, resolution=5, tickinterval=50, length=350, label='Temps (jours)', relief='raised', width=10,variable=Valeur, command=temps).pack(side = LEFT and BOTTOM)
     
     
    random()
    damier()
    C.place(x=0, y=0)
    fen.mainloop()
    fen.quit()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Citation Envoyé par helenahelena Voir le message
    Cependant mon message d'erreur est que la fonction "temps" n'est pas définie. Je ne comprend pas pourquoi.
    Pourquoi ouvrir une nouvelle discussion alors que normalement vous devriez comprendre quoi faire suite à celle que vous avez déjà ouverte sur un sujet semblable?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 7
    Par défaut
    Citation Envoyé par wiztricks Voir le message

    Pourquoi ouvrir une nouvelle discussion alors que normalement vous devriez comprendre quoi faire

    - W
    J'ai essayé plusieurs fois en m'aidant effectivement de mon ancienne discussion, mais je pense que l'erreur ne vient pas de là.
    J'ai essayé avec le "command = temps(int(s))" et "command = temps", mais j'ai toujours le même message d'erreur, en mettant évidemment "Valeur = IntVar (fen)"

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Si tu copiais l'entièreté du message d'erreur ici on pourrait se faire une meilleure idée.

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 7
    Par défaut
    Oui bien sûr :

    Pour ce code ci :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    from tkinter import * 
    from random import *
    #création du monde quadrillé
    #création de la grille vide
    def damier() :
        ligne_vert()
        ligne_hori()
     
    def ligne_vert() :
        x = 0
        while x <= 750 :
            C.create_line(x, 0, x, 600)
            x += 15
     
    def ligne_hori() :
        y = 0
        while y <= 600 :
            C.create_line(0, y, 750, y)
            y += 15
     
    fen=Tk()
    fen.title('Trajet du plastique dans les océans')
    fen.geometry("750x800")
    C=Canvas(fen, bg='white', width = 750, height = 600)
     
    #fonction test pour scale
     
    def random () :
        n = randint (0, 585)
        m = randint (0, 735)
        if n % 15 == 0 and m % 15 == 0 and n >= 9 and m >= 9 and C.create_rectangle(n+2, m+2, n+12, m+12, fill='white') :
            C.create_rectangle(n+3, m+3, n+11, m+11, fill='black')
        else : 
            random()
     
    def temps (s) :
        n = randint (0, 585)
        m = randint (0, 735)
        C.create_rectangle(n, m, n+9, m+9, fill='black')
        alleradroite (n, m)
     
    def alleradroite (n,m) :
        C.create_rectangle(n+15, m, n+24, m+9, fill='black')
     
     
     
    #remplissage de la grille pour les terres
    #australie
     
    C.create_rectangle(630,375,645,465, fill='black')
    C.create_rectangle(645,420,660,450, fill='black')
     
    Valeur=IntVar(fen)
    Scale (fen,orient='horizontal', from_=0, to=365, resolution=5, tickinterval=50, length=350, label='Temps (jours)', relief='raised', width=10,variable=Valeur, command= lambda s : temps(int(s))).pack(side = LEFT and BOTTOM)
     
     
     
    random()
    damier()
    C.place(x=0, y=0)
    fen.mainloop()
    fen.quit()
    J'ai comme message (sur le terminal) :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    from tkinter import * 
    >>> from random import *
    >>> #création du monde quadrillé
    ... #création de la grille vide
    ... def damier() :
    ...     ligne_vert()
    ...     ligne_hori()
    ... 
    >>> def ligne_vert() :
    ...     x = 0
    ...     while x <= 750 :
    ...         C.create_line(x, 0, x, 600)
    ...         x += 15
    ... 
    >>> def ligne_hori() :
    ...     y = 0
    ...     while y <= 600 :
    ...         C.create_line(0, y, 750, y)
    ...         y += 15
    ... 
    >>> fen=Tk()
    fen.title('Trajet du plastique dans les océans')
    fen.geometry("750x800")
    C=Canvas(fen, bg='white', width = 750, height = 600)
     
    #fonction test pour scale
     
    def random () :
        n = randint (0, 585)
        m = randint (0, 735)
        if n % 15 == 0 and m % 15 == 0 and n >= 9 and m >= 9 and C.create_rectangle(n+2, m+2, n+12, m+12, fill='white') :
            C.create_rectangle(n+3, m+3, n+11, m+11, fill='black')
        else : 
            random()
     
    def temps (s) :
        n = randint (0, 585)
        m = randint (0, 735)
        C.create_rectangle(n, m, n+9, m+9, fill='black')
        alleradroite (n, m)
     
    def alleradroite (n,m) :
        C.create_rectangle(n+15, m, n+24, m+9, fill='black')
     
     
     
    #remplissage de la grille pour les terres
    #australie
     
    C.create_rectangle(630,375,645,465, fill='black')
    C.create_rectangle(645,420,660,450, fill='black')
     
    Valeur=IntVar(fen)
    Scale (fen,orient='horizontal', from_=0, to=365, resolution=5, tickinterval=50, length=350, label='Temps (jours)', relief='raised', width=10,vari>>> fen.title('Trajet du plastique dans les océans')
    ''
    >>> fen.geometry("750x800")
    ''
    >>> C=Canvas(fen, bg='white', width = 750, height = 600)
    >>> 
    >>> #fonction test pour scale
    ... 
    >>> def random () :
    ...     n = randint (0, 585)
    ...     m = randint (0, 735)
    ...     if n % 15 == 0 and m % 15 == 0 and n >= 9 and m >= 9 and C.create_rectangle(n+2, m+2, n+12, m+12, fill='white') :
    ...         C.create_rectangle(n+3, m+3, n+11, m+11, fill='black')
    ...     else : 
    ...         random()
    ... 
    >>> def temps (s) :
    ...     n = randint (0, 585)
    ...     m = randint (0, 735)
    ...     C.create_rectangle(n, m, n+9, m+9, fill='black')
    ...     alleradroite (n, m)
    ...     
    ... def alleradroite (n,m) :
      File "<stdin>", line 7
        def alleradroite (n,m) :
          ^
    SyntaxError: invalid syntax
    >>>     C.create_rectangle(n+15, m, n+24, m+9, fill='black')
      File "<stdin>", line 1
        C.create_rectangle(n+15, m, n+24, m+9, fill='black')
        ^
    IndentationError: unexpected indent
    >>>     
    ...     
    ... 
    >>> #remplissage de la grille pour les terres
    ... #australie
    ... 
    >>> C.create_rectangle(630,375,645,465, fill='black')
    1
    >>> C.create_rectangle(645,420,660,450, fill='black')
    2
    >>> 
    >>> Valeur=IntVar(fen)
    >>> Scale (fen,orient='horizontal', from_=0, to=365, resolution=5, tickinterval=50, length=350, label='Temps (jours)', relief='raised', width=10,variable=Valeur, command= lambda s : temps(int(s))).pack(side = LEFT and BOTTOM)
    >>> 
    >>> 
    >>> 
    >>> random()
    >>> damier()
    >>> C.place(x=0, y=0)
    >>> fen.mainloop()
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "/Users/helena/anaconda/lib/python3.6/tkinter/__init__.py", line 1699, in __call__
        return self.func(*args)
      File "<stdin>", line 1, in <lambda>
    NameError: name 'temps' is not defined

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    La fonction temps du message initial était:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def temps () :
        n = randint (0, 585)
        m = randint (0, 735)
        C.create_rectangle(n, m, n+9, m+9, fill='black')
        alleradroite (n, m)
    et sa déclaration dans Scale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Scale (..., command=temps).pack(side = LEFT and BOTTOM)
    Dans ce cas, çà va râler non pas parce que la fonction n'est pas définie mais parce qu'elle reçoit un argument non déclaré (d'où ma réponse initiale).

    Puis vous postez un code avec plein de changements brouillons et surtout l'impression que vous essayez de recopier le code dans une console Python plutôt que d'exécuter un script.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Soucis avec une commande
    Par PMelgibson dans le forum IRC / mIRC
    Réponses: 0
    Dernier message: 29/01/2014, 19h13
  2. [MVVM] Souci avec les commandes
    Par Adrien.B dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 02/10/2013, 14h42
  3. souci avec ma commande awk
    Par étoile de mer dans le forum Linux
    Réponses: 1
    Dernier message: 29/08/2010, 15h57
  4. soucis avec la commande java
    Par polymorphisme dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 29/07/2010, 15h11
  5. Soucis avec la commande cp
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 12/07/2007, 22h59

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