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 :

Actualisation d'un score Tkinter


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Actualisation d'un score Tkinter
    Bonjour, j'essaie de créer un compteur qui s'incrémente de 1 à chaque fois qu'on clique sur le bouton mais le problème est que la variable score redescend à 0 pour une raison inconnue :
    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
     
    from tkinter import*
    from random import randint
    fen=Tk()
    fen.geometry("800x800")
    fen.title("Test de rapidité")
     
     
    scoretext=Label(fen,text="Score : ",font=("Verdana",20))
    scoretext.place(x=620,y=30)
     
    pts=0
    def points(pts):
        print(pts)
        pts=pts+1
        scorepts=Label(fen,text=pts,font=("Verdana",20))
        scorepts.place(x=730,y=30)
        print(pts)
     
     
     
    def nvbouton():
        bout['text']="Clique ici"
        bout.place_forget()
        bout.place(x=randint(50,750),y=randint(50,750))
     
     
    bout=Button(fen,text="Clique ici pour commencer",command=lambda:[nvbouton(),points(pts)])
    bout.place(x=330,y=360)
     
     
    fen.mainloop()
    (l12-18). J'ai mis des print(pts) pour voir ou le problème se situe et c'est bien au début de la fonction points.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    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 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Salut,

    C'est parce que pts n'est pas incrémenté... car vous avez loupé quelque chose sur la portée des variables.

    - W

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Qu'est-ce que "la portée des variables" et "quelque chose"? Pourriez-vous être plus précis svp ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    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 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Citation Envoyé par aoahh Voir le message
    Qu'est-ce que "la portée des variables" et "quelque chose"? Pourriez-vous être plus précis svp ?
    C'est la notion qui se cache derrière variables globales/locales des tutos pour débutants mais clairement décrite dans le tutoriel Python..

    - W

  5. #5
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Je crois avoir compris l'idée mais je n'arrive à l'appliquer à mon code. Pouvez-vous m'indiquer comment faire ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    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 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Citation Envoyé par aoahh Voir le message
    Pouvez-vous m'indiquer comment faire ?
    Si écris cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> def f(a):
    ...     a = a + 1
    ...     print(a)
    ...
    Et que je l'appelle plusieurs fois avec le même paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> a = 0
    >>> f(a)
    1
    >>> f(a)
    1
    >>>
    j'obtiens toujours le même résultat (le compteur ne s'incrémente pas).

    Votre code ne fait pas grand chose d'autre. A vous de découvrir toutes les petites choses qui ne vont pas.

    - W

  7. #7
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 610
    Points : 2 074
    Points
    2 074
    Par défaut
    Peut-être qu'un truc comme cela conviendrait ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    pts=0
    def points():
        global pts
        print(pts)
        pts=pts+1
        scorepts=Label(fen,text=pts,font=("Verdana",20))
        scorepts.place(x=730,y=30)
        print(pts)
    en appelant points() et non points(pts)

Discussions similaires

  1. Actualise l'affichage d'une fenêtre tkinter
    Par Celonius dans le forum Général Python
    Réponses: 3
    Dernier message: 14/04/2020, 19h03
  2. Réponses: 1
    Dernier message: 03/10/2019, 09h17
  3. [ JSP ][ Débutant ] Liste déroulante + actualisation de page
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 17/04/2004, 20h51
  4. [CR7]Actualisation des données depuis VB
    Par elifqaoui dans le forum SDK
    Réponses: 4
    Dernier message: 24/11/2003, 14h44
  5. Actualisation d'une liste "dépendante".
    Par Trilby dans le forum ASP
    Réponses: 6
    Dernier message: 19/11/2003, 19h39

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