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 :

Problème variable Python


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 14
    Points : 18
    Points
    18
    Par défaut Problème variable Python
    Bonjour à tous,

    Je suis dans un projet que je dois rendre pour mardi où je fais le jeu du "pierre feuille ciseaux"

    Je suis encore vraiment débutant en Python cependant j'ai réussi à résoudre tous les problèmes jusqu'à maintenant.

    Mais je suis maintenant confronté à deux problèmes :

    Mon jeu marche très bien mais...
    J'ai créé 3 variables pour faire un genre de score (comme ici) :

    Nom : Sans titre-1.jpg
Affichages : 106
Taille : 233,8 Ko

    Sauf que les variables se remettent à 0 après avoir bien fonctionné une fois. J'ai tout essayé mais je n'y arrive pas...

    Deuxième problème, j'aimerais qu'après avoir cliqué sur le bouton "valider", l'ordinateur choisisse de lui-même un autre nombre aléatoire pour la deuxième manche.

    Je vous mets mon programme :

    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
     
     
    def pierrepapierciseaux(): #Fonction main
        for widget in root.winfo_children(): #Retourne la liste de tous les widgets enfants du widget appelant 
        #dans leur ordre de rangement dans la pile: du plus bas au plus haut
            widget.destroy() #On détruit le widget
        global nombre_manche
        global champ_de_saisie
        global resultat
        global manche
        global coup_ordinateur
        global duel
        global score
     
        choix_hasard = random.randint(1,3)  # Tu appelles la fonction random du module random,
        if choix_hasard == 1 :
            coup_ordinateur = "pierre"
            print("Pierre")
        elif choix_hasard == 2 :
            coup_ordinateur = "feuille"  
            print("Feuille")
        else :
            coup_ordinateur = "ciseaux"  
            print("Ciseaux")
     
        bouton_menu = Button(root, text='Menu', command=partial(main), width='8', height='1', foreground="#2113C0", background="#D1D0CC", activeforeground="#2113C0", activebackground="#848489", font=("Comic sans MS",12)) #Bouton valider
        bouton_menu.pack() #On positionne ce widget avec le gestionnaire de position pack (+ marge verticale de 20 pour espacer les différents widgets)
     
        nombre_manche = 0
     
        label = Label(root, text="Pierre papier ciseaux", font=("Comic sans MS", 20), background="#009DE0", foreground="#F8F41F") #Titre du jeu
        label.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        label = Label(root, text="Jouer au mythique jeu du Pierre papier ciseaux contre un ordinateur", font=("Comic sans MS", 15), background="#009DE0") #Indication pour le champ de saisie ci-dessous
        label.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        resultat = Label(root, text='', justify='center', font=("Arial", 15), background="#009DE0") #On affiche le résultat (soit "Le nombre entré est plus petit que le nombre à trouver", soit "Le nombre entré est plus grand que le nombre à trouver", soit "Vous avez gagné"
        resultat.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        label = Label(root, text="Veuillez rentrer soit 'pierre', soit 'feuille' ou soit 'ciseaux' : ", font=("Comic sans MS", 15), background="#009DE0") #Indication pour le champ de saisie ci-dessous
        label.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        champ_de_saisie = Entry(root, justify='center', background="#D1D0CC") #Champ de saisie du nombre
        champ_de_saisie.pack(pady='20') #On positionne ce widget avec le gestionnaire de position pack (+ marge verticale de 20 pour espacer les différents widgets)
     
        duel = Label(root, text='', justify='center', font=("Arial", 15), background="#009DE0") #On affiche le résultat (soit "Le nombre entré est plus petit que le nombre à trouver", soit "Le nombre entré est plus grand que le nombre à trouver", soit "Vous avez gagné"
        duel.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        resultat = Label(root, text="", justify='center', font=("Arial", 15), background="#009DE0") #On affiche le résultat (soit "Le nombre entré est plus petit que le nombre à trouver", soit "Le nombre entré est plus grand que le nombre à trouver", soit "Vous avez gagné"
        resultat.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        bouton_valider = Button(root, text='Valider', command=partial(valider_pierrepapierciseaux), justify='center', width='20', height='1', foreground="#2113C0", background="#D1D0CC", activeforeground="#2113C0", activebackground="#848489", font=("Comic sans MS",15)) #Bouton valider
        bouton_valider.pack(pady='20') #On positionne ce widget avec le gestionnaire de position pack (+ marge verticale de 20 pour espacer les différents widgets)
     
        manche = Label(root, text="", justify='center', font=("Comic sans MS", 15), background="#009DE0") #On affiche le nombre de tentatives
        manche.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        score = Label(root, text="", justify='center', font=("Comic sans MS", 15), background="#009DE0") #On affiche le nombre de tentatives
        score.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        root.mainloop() #Lancement de la boucle principale
     
    def valider_pierrepapierciseaux(): #Fonction valider
        global nombre_manche
    #global est une instruction Python qui l'informe que la variable a qui est utilisée à l'intérieur de la 
    #fonction est la même que celle qui est définie à l'extérieur de la fonction
     
        nombre_manche += 1 #On incrémente de 1 à chaque fois le nombre d'essai
     
        victoire_utilisateur = 0
        victoire_ordinateur = 0
        egalite = 0
     
        if champ_de_saisie.get() == "pierre":
            duel.config(text="Pierre VS "+ coup_ordinateur) #Alors le programme affiche que le nombre est trop petit (par rapport au nombre à trouver)         
        elif champ_de_saisie.get() == "feuille":
            duel.config(text="Feuille VS "+ coup_ordinateur)
        else:
            duel.config(text="Ciseaux VS "+ coup_ordinateur)
     
        if champ_de_saisie.get() == coup_ordinateur :
            resultat.config(text="Egalité", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#BEC6C0",pady='5', padx='5')
            egalite = egalite +1
        elif champ_de_saisie.get() == "feuille" and coup_ordinateur == "pierre":
            resultat.config(text="Victoire", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#26F053",pady='5', padx='5')
            victoire_utilisateur =  victoire_utilisateur +1 
        elif champ_de_saisie.get() == "pierre" and coup_ordinateur == "ciseaux":
            resultat.config(text="Victoire", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#26F053",pady='5', padx='5')
            victoire_utilisateur =  victoire_utilisateur +1 
        elif champ_de_saisie.get() == "ciseaux" and coup_ordinateur == "feuille":
            resultat.config(text="Victoire", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#26F053",pady='5', padx='5')
            victoire_utilisateur =  victoire_utilisateur +1 
        elif champ_de_saisie.get() == "pierre" and coup_ordinateur == "feuille":
            resultat.config(text="Défaite", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#F81F67",pady='5', padx='5')
            victoire_ordinateur = victoire_ordinateur +1
        elif champ_de_saisie.get() == "ciseaux" and coup_ordinateur == "pierre":
            resultat.config(text="Défaite", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#F81F67",pady='5', padx='5')
            victoire_ordinateur = victoire_ordinateur +1
        elif champ_de_saisie.get() == "feuille" and coup_ordinateur == "ciseaux":
            resultat.config(text="Défaite", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#F81F67",pady='5', padx='5')
            victoire_ordinateur = victoire_ordinateur +1
     
        manche.config(text="Nombre de manches : " + str(nombre_manche)) #Nombre de tentatives
     
        score.config(text="Vous : "+str(victoire_utilisateur)+" / Egalité : "+str(egalite)+" / Ordinateur : "+str(victoire_ordinateur)) #Nombre de tentatives

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    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 : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Bonjour,

    Je vois que vous utilisez les fonctions... Quelle solution choisissez-vous pour faire persister vos données ?

    Il y a pas mal de solutions, mais la plus simple reste à mon avis la sérialisation avec un module comme pickle ou json par exemple.

    Plus qu'à créer votre fonction save_scores, une fois que vous aurez lu la documentation d'un de ces modules.

    N'hésitez pas à présenter vos tests, si des difficultés... bon courage !
    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)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut !

    Utilises la balises [ code] s'il te plaît, ton code est difficilement lisible.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 14
    Points : 18
    Points
    18
    Par défaut
    C'est fait, désolé

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par LudovicV Voir le message
    C'est fait, désolé
    Merci !
    Voici le correctif, j'ai fais qq changements... (J'ai rajouté des variables globales et j'ai déplacé la partie où tu détermines la variable coup_ordinateur)
    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
    from tkinter import *
    import random
     
    root = Tk()
    root.configure(bg="#009DE0")
     
    def pierrepapierciseaux(): #Fonction main
        for widget in root.winfo_children(): #    
            widget.destroy() #On détruit le widget
        global nombre_manche, victoire_utilisateur, victoire_ordinateur, egalite
        global champ_de_saisie
        global resultat
        global manche
        global duel
        global score
     
        nombre_manche = 0
        victoire_utilisateur = 0
        victoire_ordinateur = 0
        egalite = 0
     
        label = Label(root, text="Pierre papier ciseaux", font=("Comic sans MS", 20), background="#009DE0", foreground="#F8F41F") #Titre du jeu
        label.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        label = Label(root, text="Jouer au mythique jeu du Pierre papier ciseaux contre un ordinateur", font=("Comic sans MS", 15), background="#009DE0") #Indication pour le champ de saisie ci-dessous
        label.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        resultat = Label(root, text='', justify='center', font=("Arial", 15), background="#009DE0") #On affiche le résultat (soit "Le nombre entré est plus petit que le nombre à trouver", soit "Le nombre entré est plus grand que le nombre à trouver", soit "Vous avez gagné"
        resultat.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        label = Label(root, text="Veuillez rentrer soit 'pierre', soit 'feuille' ou soit 'ciseaux' : ", font=("Comic sans MS", 15), background="#009DE0") #Indication pour le champ de saisie ci-dessous
        label.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        champ_de_saisie = Entry(root, justify='center', background="#D1D0CC") #Champ de saisie du nombre
        champ_de_saisie.pack(pady='20') #On positionne ce widget avec le gestionnaire de position pack (+ marge verticale de 20 pour espacer les différents widgets)
     
        duel = Label(root, text='', justify='center', font=("Arial", 15), background="#009DE0") #On affiche le résultat (soit "Le nombre entré est plus petit que le nombre à trouver", soit "Le nombre entré est plus grand que le nombre à trouver", soit "Vous avez gagné"
        duel.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        resultat = Label(root, text="", justify='center', font=("Arial", 15), background="#009DE0") #On affiche le résultat (soit "Le nombre entré est plus petit que le nombre à trouver", soit "Le nombre entré est plus grand que le nombre à trouver", soit "Vous avez gagné"
        resultat.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        bouton_valider = Button(root, text='Valider', command=valider_pierrepapierciseaux, justify='center', width='20', height='1', foreground="#2113C0", background="#D1D0CC", activeforeground="#2113C0", activebackground="#848489", font=("Comic sans MS",15)) #Bouton valider
        bouton_valider.pack(pady='20') #On positionne ce widget avec le gestionnaire de position pack (+ marge verticale de 20 pour espacer les différents widgets)
     
        manche = Label(root, text="", justify='center', font=("Comic sans MS", 15), background="#009DE0") #On affiche le nombre de tentatives
        manche.pack() #On positionne ce widget avec le gestionnaire de position pack
     
        score = Label(root, text="", justify='center', font=("Comic sans MS", 15), background="#009DE0") #On affiche le nombre de tentatives
        score.pack() #On positionne ce widget avec le gestionnaire de position pack
     
     
     
    def valider_pierrepapierciseaux(): #Fonction valider
        global nombre_manche, victoire_utilisateur, egalite, victoire_ordinateur
        #global est une instruction Python qui l'informe que la variable a qui est utilisée à l'intérieur de la
        #fonction est la même que celle qui est définie à l'extérieur de la fonction
     
        nombre_manche += 1 #On incrémente de 1 à chaque fois le nombre d'essai
     
        choix_hasard = random.randint(1,3) # Tu appelles la fonction random du module random,
        if choix_hasard == 1 :
            coup_ordinateur = "pierre"
            print("Pierre")
        elif choix_hasard == 2 :
            coup_ordinateur = "feuille"
            print("Feuille")
        else :
            coup_ordinateur = "ciseaux"
            print("Ciseaux")
     
        if champ_de_saisie.get() == "pierre":
            duel.config(text="Pierre VS "+ coup_ordinateur) #Alors le programme affiche que le nombre est trop petit (par rapport au nombre à trouver)
        elif champ_de_saisie.get() == "feuille":
            duel.config(text="Feuille VS "+ coup_ordinateur)
        else:
            duel.config(text="Ciseaux VS "+ coup_ordinateur)
     
        if champ_de_saisie.get() == coup_ordinateur :
            resultat.config(text="Egalité", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#BEC6C0",pady='5', padx='5')
            egalite = egalite +1
        elif champ_de_saisie.get() == "feuille" and coup_ordinateur == "pierre":
            resultat.config(text="Victoire", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#26F053",pady='5', padx='5')
            victoire_utilisateur = victoire_utilisateur +1
        elif champ_de_saisie.get() == "pierre" and coup_ordinateur == "ciseaux":
            resultat.config(text="Victoire", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#26F053",pady='5', padx='5')
            victoire_utilisateur = victoire_utilisateur +1
        elif champ_de_saisie.get() == "ciseaux" and coup_ordinateur == "feuille":
            resultat.config(text="Victoire", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#26F053",pady='5', padx='5')
            victoire_utilisateur = victoire_utilisateur +1
        elif champ_de_saisie.get() == "pierre" and coup_ordinateur == "feuille":
            resultat.config(text="Défaite", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#F81F67",pady='5', padx='5')
            victoire_ordinateur = victoire_ordinateur +1
        elif champ_de_saisie.get() == "ciseaux" and coup_ordinateur == "pierre":
            resultat.config(text="Défaite", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#F81F67",pady='5', padx='5')
            victoire_ordinateur = victoire_ordinateur +1
        elif champ_de_saisie.get() == "feuille" and coup_ordinateur == "ciseaux":
            resultat.config(text="Défaite", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#F81F67",pady='5', padx='5')
            victoire_ordinateur = victoire_ordinateur +1
     
        manche.config(text="Nombre de manches : " + str(nombre_manche)) #Nombre de tentatives
     
        score.config(text="Vous : "+str(victoire_utilisateur)+" / Egalité : "+str(egalite)+" / Ordinateur : "+str(victoire_ordinateur)) #Nombre de tentatives 
     
    pierrepapierciseaux()
    root.mainloop()

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 14
    Points : 18
    Points
    18
    Par défaut
    Un grand merci pour votre aide...
    J'ai une petite dernière question.
    Ca serait mieux si il y aura un bouton plutôt que le champ de saisie pour "pierre", "feuille" et "ciseaux".
    J'ai lu sur certains forums que pour savoir si le bouton avait été cliqué il fallait mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    quitter=Button(fenetre, text="Quitter", command=valider)
     
    def valider():
        if quitter.click == False:
            # blablablabliblibli
            quitter.click = True
    Mais quand je fais quitter.click = True, cela ne marche pas.

  7. #7
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    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 : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Je ne suis pas sûr d'avoir bien compris, mais si la fonction valider s'exécute, ça ne veut pas dire qu'on a appuyé sur le bouton ?

    Si vous appuyez sur un bouton "Pierre", "Feuille", ou "Ciseau", alors toutes les étapes suivantes s'exécuteront,
    • Afficher le gagnant dans un label
    • Calculer les points
    • Afficher les points
    • Sauvegarder les points


    Pas besoin de détecter quoi que se soit à mon avis...
    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)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 14
    Points : 18
    Points
    18
    Par défaut
    Oui pour cela oui.
    Je parle surtout pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     if champ_de_saisie.get() == coup_ordinateur :
            resultat.config(text="Manche nulle", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#BEC6C0",pady='5', padx='5')
            egalite = egalite +1
     
     elif champ_de_saisie.get() == "feuille" and coup_ordinateur == "pierre":
            resultat.config(text="Manche remportée !", justify='center', borderwidth ="2px", relief=SUNKEN, font=("Arial", 15), background="#26F053",pady='5', padx='5')
            victoire_utilisateur =  victoire_utilisateur +1
    Comment remplacer champ_de_saisir.get() par si le bouton "feuille" a été cliqué pour dire qui gagne contre qui...

  9. #9
    Invité
    Invité(e)
    Par défaut
    Plusieurs conseils :
    1. Mieux vaut utiliser la fonction bind("<ButtonRelease-1>",choix), ça permet aux joueurs de cliquer et de changer d'avis avant qu'il relâche le bouton de la souris autre part sans que ça ne soit pris en compte.
    2. Tu devrais plutôt placer 3 boutons "Pierre","Feuille","Ciseaux" côte à côte et supprimer le bouton valider
    3. Tu peux utiliser la fonction grid au lieu de pack mais ça demande un peu plus de réflexion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def valider(event):
        choix_du_joueur = event.widget.cget('text')
        ...
        ...
     
     
    pierre=Button(fenetre, text="Pierre")
    pierre.bind("<ButtonRelease-1>", valider)
    ...
    Je te laisse chercher un peu cette fois-ci !

    Nom : PFC.JPG
Affichages : 112
Taille : 54,1 Ko

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

    Citation Envoyé par LudovicV Voir le message
    Comment remplacer "champ_de_saisir.get() par si le bouton "feuille" a été cliqué pour dire qui gagne contre qui...
    Pour savoir si le Button "feuille" a été cliqué, rien n'empêche de façon basique d'appeler une fonction spécifique à ce Button qui appellera une autre fonction avec "feuille" (ou autre) en paramètre.
    Cela fait, on pourra vous montrer comment éviter la fonction intermédiaire avec des "closure" ou des "lambda"... mais la logique de base reste la même: comment savoir quel bouton a été cliqué avec le Python que vous connaissez est faisable.

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

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 14
    Points : 18
    Points
    18
    Par défaut
    Un grand grand merci pour votre aide... c'est juste SUPER GENTIL ! (j'ai réussi grâce à vos pistes à faire ce que je voulais !!)

    Citation Envoyé par LeNarvalo Voir le message
    Plusieurs conseils :
    1. Mieux vaut utiliser la fonction bind("<ButtonRelease-1>",choix), ça permet aux joueurs de cliquer et de changer d'avis avant qu'il relâche le bouton de la souris autre part sans que ça ne soit pris en compte.
    2. Tu devrais plutôt placer 3 boutons "Pierre","Feuille","Ciseaux" côte à côte et supprimer le bouton valider
    3. Tu peux utiliser la fonction grid au lieu de pack mais ça demande un peu plus de réflexion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def valider(event):
        choix_du_joueur = event.widget.cget('text')
        ...
        ...
     
     
    pierre=Button(fenetre, text="Pierre")
    pierre.bind("<ButtonRelease-1>", valider)
    ...
    Je te laisse chercher un peu cette fois-ci !

    Nom : PFC.JPG
Affichages : 112
Taille : 54,1 Ko

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

Discussions similaires

  1. Problème variable python : Flask et html input
    Par fullthrottle dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 02/06/2017, 21h31
  2. Problème de prise en compte des variables Python
    Par PythonNovices dans le forum Général Python
    Réponses: 2
    Dernier message: 12/05/2015, 10h31
  3. [javascript] Problème variable globale !!!!
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/08/2005, 16h41
  4. [Rave report 5.1.3][delphi 7] Probléme variable PIVar
    Par GILLESKLEIN dans le forum Rave
    Réponses: 2
    Dernier message: 05/02/2005, 15h27
  5. problème variable extern
    Par HeKaz dans le forum C
    Réponses: 14
    Dernier message: 08/01/2003, 01h44

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