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 :

Tkinter et canvas: gestion clic souris


Sujet :

Tkinter Python

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Bordeaux
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Bordeaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 36
    Points
    36
    Par défaut Tkinter et canvas: gestion clic souris
    Bonjour,
    Je suis en train d'écrire (étant à la retraite c'est juste une exercice de style) un programme pour jouer au jeu Simon (4 couleurs, il faut reproduire la séquence de couleurs choisie par l'ordinateur). J'ai fini le jeu, en le testant j'ai trouvé un problème que je n'arrive pas à résoudre.
    Ci-dessous le code entier en premier et en suivant un condensé pour tester les actions PC et joueur.
    J'ai fait avec un canvas et quatre rectangles, je fais des "bind" sur les rectangles pour comptabiliser les actions du joueur.
    Le jeu se lance en appuyant sur le bouton Jouer, la machine joue une fois, je joue en cliquant, la machine joue deux fois etc.
    Cette partie fonctionne, sauf que si je clique pendant que la machine joue (à tester au delà du troisième choix machine), le clic (valeur r) est pris en compte alors que je suis ds une boucle ( for i in range(compte) pendant laquelle le canvas est .unbind (can1.unbind("<Button-1>").
    J'ai essayé de changer la logique en faisant un timer (.after) sur la fonction JeuxPC, mais rien de plus...
    Une solution?

    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
     
     
    from tkinter import *
    from tkinter import colorchooser
    from tkinter import messagebox
    import time
    import random
    TemPor=0.1
    def Ombre(valCoul):
            global TemPor
            #print("***",valCoul)
            #print(listeClic[valCoul])
            can1.itemconfig(valCoul,fill=listeCoulOmb[valCoul-1])
            can1.update_idletasks()
            time.sleep(TemPor)
            can1.itemconfig(valCoul,fill=listeCoul[valCoul-1])
            can1.update_idletasks()
            time.sleep(TemPor)
     
    def JeuxPC(evt):
            global compte
            global compteJH
            global flag
            global listeClic
            print(flag)
     
            if flag=="jeuPC":
                                    #IdAfter=can1.after(1,JeuxPC(evt=None))
                    message['text']=" PC joue..."
                    can1.unbind("<Button-1>")
                    compte=compte+1
                    valCoul=random.randint(1,4)
                    listeClic.append(valCoul)
                    print(listeClic)
                    for i in range(compte):
                            #print (i," ",compte)
                            #print(listeClic[i])
                            Ombre(listeClic[i])
                            time.sleep(TemPor)
                    #Ombre(valCoul)
                    flag="jeuHM"
                    message['text']=" Humain joue..."
                    compteJH=0
                    #compte=compte+1
                    can1.bind("<Button-1>",JeuxPC)
                    #IdAfter=can1.after(10,JeuxPC(evt))
            else:
                    print ("compteJH=",compteJH,"compte=",compte)
                    #if compteJH==0:
                            #can1.bind("<Button-1>",JeuxPC)
                            #print("JE BIND")
                    if compteJH <compte:
                            r = can1.find_overlapping(evt.x, evt.y, evt.x, evt.y)        
                            compteJH+=1
                            print ("compteJH=",compteJH)
                            print("Clic=",listeCoul[r[0]-1])
                            print("listeClic=",listeClic[compteJH-1])
                            fen.bell()
                            if r[0]!=listeClic[compteJH-1]:
                                    messagebox.showinfo("PERDU","PERDUUU...")
                                    can1.unbind("<Button-1>")
                                    b1.config(state='normal')
                                    compteJH=0
                                    compte=0
                                    listeClic[:]=[]
                                    message['text']=" En attente"
                                    return
     
                    if compteJH==compte:        
                            time.sleep(TemPor*10)
                            flag="jeuPC"
                            #IdAfter=can1.after(10,JeuxPC(evt))
                            JeuxPC(evt=None)
     
     
    def LancerJeux():
           b1.config(state='disabled')
           JeuxPC(evt=None)
     
    listeCoul=['red','blue','green','yellow']
    listeCoulOmb=['#d93199','#0090d9','#00d9c4','#f4d9a6']
    listeClic=[]
    ht=800
    lg=800
    #cp =colorchooser.askcolor()
    fen=Tk()
    compte=0
    flag="jeuPC"
    can1=Canvas(fen,width=lg, height=ht)
    can1.grid(row=0,column=0)
    for countLig in range(0,2):
            for countCol in range(0,2):
                #coulF=listeCoul(2*countCol)
                i = can1.create_rectangle(lg*countCol/2,ht*countLig/2,(countCol+1)*ht/2,(countLig+1)*lg/2,fill=listeCoul[2*countLig+countCol])
                #print(i)
    b1=Button(fen,      text="Jouer",command=LancerJeux)
    b1.grid(row=4,column=0,columnspan=2,sticky="NSWE")
    b2=Button(fen,      text="Sol")
    b2.grid(row=5,column=0,columnspan=2,sticky="NSWE")
    message = Label(fen,font=('sans', 20, 'bold'),text="En attente")
    message.grid(row=3,column=0,columnspan=2,sticky="NSWE")
    fen.mainloop()
    [
    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
     
    from tkinter import *
    from tkinter import colorchooser
    from tkinter import messagebox
    import time
    import random
     
    def Ombre(valCoul):
            #print("***",valCoul)
            #print(listeClic[valCoul])
            can1.itemconfig(valCoul,fill=listeCoulOmb[valCoul-1])
            can1.update_idletasks()
            time.sleep(0.1)
            can1.itemconfig(valCoul,fill=listeCoul[valCoul-1])                                                          
     
    def JeuxPC(evt):
            global compte
            global compteJH
            global flag
            global listeClic
     
            if flag=="jeuPC":
                    #                #IdAfter=can1.after(1,JeuxPC(evt=None))
                    print(flag)
                    #can1.unbind("<Button-1>")
                    compte=compte+1
                    for i in range(compte):
                            print (compte)
                            time.sleep(1)
                    can1.bind("<Button-1>",JeuxPC)
                    flag="jeuHM"
                    compteJH=0
     
            else:       
                    print(flag)
                    print ("compteJH=",compteJH,"compte=",compte)
                    r = can1.find_overlapping(evt.x, evt.y, evt.x, evt.y)
                    print("r=",r)
                    if compteJH <compte:      
                            compteJH+=1
                            print ("compteJH=",compteJH)
                    if compteJH==compte:        
                            flag="jeuPC"
                            can1.unbind("<Button-1>")
                            #IdAfter=can1.after(1,JeuxPC(evt=None))
                            JeuxPC(evt=None)
     
     
    def LancerJeux():
           JeuxPC(evt=None)
     
    listeCoul=['red','blue','green','yellow']
    listeCoulOmb=['#d93199','#0090d9','#00d9c4','#f4d9a6']
    listeClic=[]
    ht=800
    lg=800
    #cp =colorchooser.askcolor()
    fen=Tk()
    compte=0
    flag="jeuPC"
    can1=Canvas(fen,width=lg, height=ht)
    can1.grid(row=0,column=0)
    for countLig in range(0,2):
            for countCol in range(0,2):
                #coulF=listeCoul(2*countCol)
                i = can1.create_rectangle(lg*countCol/2,ht*countLig/2,(countCol+1)*ht/2,(countLig+1)*lg/2,fill=listeCoul[2*countLig+countCol])
                #print(i)
    b1=Button(fen,      text="Jouer",command=LancerJeux)
    b1.grid(row=4,column=0,columnspan=2,sticky="NSWE")
    b2=Button(fen,      text="Sol")
    b2.grid(row=5,column=0,columnspan=2,sticky="NSWE")
    message = Label(fen,font=('sans', 20, 'bold'),text="En attente")
    message.grid(row=3,column=0,columnspan=2,sticky="NSWE")
    fen.mainloop()

  2. #2
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Le plus simple plutôt que de jouer avec les bind/unbind, est de définir une variable booléenne statuant sur si oui ou non le clic souris doit-être pris en compte, ainsi dans la fonction réliée au clic souris, un simple test de la valeur à True de cette variable est suffisant avant d'effectuer quoi que ce soit, bien entendu il faudra modifier la valeur de cette variable en fonction de ce qui se trame dans ton jeu.

    Mais tu devrais repartir sur une autre base, car ton code est pour le moment trop brouillon, et tu auras de toute façon absolument besoin d'utiliser after à multiples reprises pour gérer les décalages d'événements de ton jeu.
    Le temps ronge l'amour comme l'acide.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Bordeaux
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Bordeaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 36
    Points
    36
    Par défaut
    Merci pour les suggestions. Je suis reparti sur un autre mécanisme.
    J'ai réécrit mon code, en gérant non plus des rectangles ds un canvas mais 4 bouttons tkinter.
    Le programme fonctionne, sauf...que j'ai toujours le même problème
    Lorsque le PC joue, si le joueur appuie sur un des quatre boutons (bien qu'ayant basculé le statut de ceux-ci sur Disabled) ce clic est pris en compte en tant que premier clic lorsque le joueur prend la main (1 chance sur quatre que cela soit bon).
    Histoire de gestion d'évènements...je tourne autour de la solution
    Je mets le code pour ceux qui veulent tester.
    J'attends deux jours et je clôture le fil.
    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
    112
    113
    114
    115
    116
    117
     
    from tkinter import *
    from tkinter import messagebox
    import time
    import random
    TemPor=0.1
    def Ombre(ButClic):
            global TemPor
            listeB[ButClic].config(background=listeCoulOmb[ButClic])
            fen.update_idletasks()
            time.sleep(TemPor)
            listeB[ButClic].config(background=listeCoul[ButClic])
            fen.update_idletasks()
            time.sleep(TemPor)
     
    def JeuxHM(BoutClic):
            global compte
            global compteJH
            global flag
            global listeClic
            print("Bouttonclic ds JeuHM ",BoutClic)
            print("flag dans jeuPC ",flag)
            if BoutClic==None:
                    return
            for nbBut in range(0,4):
                    print(listeB[nbBut]['state'])     
                    #print ("compteJH=",compteJH,"compte=",compte)
            if compteJH <compte:        # compte= nombre de clic à faire (jeuPC) compteJH= clic joueur déjà fait         
                    compteJH+=1
                            #print ("compteJH=",compteJH)
                    print("BoutClic ",BoutClic)
                    print("Clic=",listeCoul[BoutClic])
                    print("listeClic=",listeClic[compteJH-1])
                    fen.bell()
            if BoutClic!=listeClic[compteJH-1]: #dernier clic à comparer ds la liste faite par le PC
                    messagebox.showinfo("PERDU","PERDUUU...")
                    b1.config(state='normal')
                    compteJH=0 #remise à zéro et sortir de la fonction jeuHM
                    compte=0
                    listeClic[:]=[]
                    message['text']=" En attente"
                    return   # je sors de jeuHM en attente autre partie
     
            if compteJH==compte:      #dernier clic joueur ss erreur=compte donc passe la main au PC  
                    time.sleep(TemPor*10)
                    flag="jeuPC"      # je change le flag
                    fen.title("Score={}".format(compteJH))
                    IdAfter=fen.after(10,JeuxPC()) # passe la main à jeuPC avec le bon flag
                    return
     
    def JeuxPC():
            global compte
            global compteJH
            global flag
            global listeClic
            print("flag dans jeuPC ",flag)
     
            if flag=="jeuPC":      #Test pour sortir de jeuPC
                    for nbBut in range(0,4):
                          listeB[nbBut].config(state=DISABLED)
                          #listeB[nbBut].config(command="")
                    for nbBut in range(0,4):
                          print(listeB[nbBut]['state'])          
                    message['text']=" PC joue..."
                    compte=compte+1 # prise en compte nouveau tirage
                    valCoul=random.randint(0,3)  # nouveau tirage
                    print("TirageCoul ",valCoul)
                    listeClic.append(valCoul)  # je rajoute à listeClic
                    print(listeClic)
                    for i in range(compte):      # je fais clignoter
                            print (i," ",compte)
                            #print(listeClic[i])
                            Ombre(listeClic[i])
                            time.sleep(TemPor)  
                    flag="jeuHM"                 #je change le flag pour passer la main à jeuHM
                    message['text']=" Humain joue..."
                    compteJH=0
                    for nbBut in range(0,4):
                            listeB[nbBut].config(state=NORMAL)
                            #listeB[nbBut].config(command=lambda nbBut=nbBut: JeuxHM(nbBut))
                    #IdAfter=fen.after(10,JeuxPC()) # je passe la main à PC pour sortir
     
    def LancerJeux():
           global flag
           b1.config(state='disabled')
           flag="jeuPC"
           fen.title("Score={}".format(0))
           JeuxPC()
     
    listeCoul=['red','blue','green','yellow'] #couleurs de base
    listeCoulOmb=['#d93199','#0090d9','#00d9c4','#f4d9a6'] # couleur de clignotement
    listeClic=[]
    listeB=[] # liste des 4 boutons cliquables (référence objet tkinter )
    htB=15
    lgB=25
    taille_grille=2
    fen=Tk()
    compte=0 # compteur du nombre de clic à faire par le joueur
    for y in range(taille_grille) :    # créatiob de 4 boutons cliquables
            for x in range(taille_grille) :
                b = Button(fen,
                           width=lgB,
                           height=htB,
                           background=listeCoul[(y*2)+(x+1)-1], 
                           activebackground=listeCoul[(y*2)+(x+1)-1],
                           state=DISABLED,
                           command=lambda ButClic=(y*2)+(x): JeuxHM(ButClic)) #de 0 à 3
                listeB.append(b)
                b.grid(row=y, column=x)
    print(listeB)   
    b1=Button(fen,      text="Jouer",command=LancerJeux)
    b1.grid(row=4,column=0,columnspan=2,sticky="NSWE")
    b2=Button(fen,      text="Sol")
    b2.grid(row=5,column=0,columnspan=2,sticky="NSWE")
    message = Label(fen,font=('sans', 20, 'bold'),text="En attente")
    message.grid(row=3,column=0,columnspan=2,sticky="NSWE")
    fen.mainloop()

  4. #4
    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 781
    Points
    36 781
    Par défaut
    Salut,

    Citation Envoyé par brunop33 Voir le message
    Le programme fonctionne, sauf...que j'ai toujours le même problème
    Lorsque le PC joue, si le joueur appuie sur un des quatre boutons (bien qu'ayant basculé le statut de ceux-ci sur Disabled) ce clic est pris en compte en tant que premier clic lorsque le joueur prend la main (1 chance sur quatre que cela soit bon).
    Désolé mais difficile de comprendre la logique de votre code.
    Un principe que vous devriez avoir est que programmer, c'est juste composer des opérations simples. Et dans votre cas particulier, si vous pensez que les clics sont pris en compte alors que le Button est "disabled", il faut essayer de reproduire çà avec un code simple: un Button, on clique dessus, il passe en mode disabled pendant un moment et on regarde ce qu'il se passe côté "clicks".

    Ca donne une truc comme çà:
    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
    import tkinter as tk
    from tkinter.constants import *
     
    root = tk.Tk()
     
    def enable_clicks():
        print('enable_clicks')
        btn.configure(state=NORMAL)
     
     
    def on_click():
        print('on_click')
        btn.configure(state=DISABLED)
        root.after(500, enable_clicks)
     
    btn = tk.Button(root, text="click!", command=on_click)
    btn.pack()
    tk.mainloop()
    Cela ne va pas vous donner de solution pour votre code mais vous permettre de constater qu'à la base, la mécanique fonctionne.... (et c'est la mainloop qui vous garantit ce fonctionnement là).
    Et si vous voulez préserver ce "bon fonctionnement", il faut utiliser avec parcimonie et discernement time.sleep et .update_idletasks (et si vous débutez avec tkinter, çà veut dire ne jamais les utiliser...)

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

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Bordeaux
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Bordeaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 36
    Points
    36
    Par défaut
    Je suis reparti de zéro et à partir de votre exemple, j'ai reprogrammé mon jeu, brique par brique...
    Tout fonctionne, pas d'appel de time.sleep ni d'update de l'IHM.
    Tout n'est peut-être pas "pythonement" écrit, mais j'ai passé en revue diverses techniques...
    Merci à ceux qui ont répondu à mes demandes.
    Je vais mettre le code ds la section jeu, si cela peut aider des débutants.
    Et la POO m'attend...

    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
    from tkinter import *
    from tkinter.constants import *
    import random
    from tkinter import messagebox
    htB=15
    lgB=25
     
    def Ombre(ButClic):
        listeB[ButClic].configure(background=listeCoul[ButClic])  
     
    def JeuxHM(BoutClic):
        global compte
        global compteJH
        global flag
        global listeClic
        if compteJH <compte:               
                    compteJH+=1
                    fen.bell()
        if BoutClic!=listeClic[compteJH-1]: #dernier clic à comparer ds la liste faite par le PC
                    messagebox.showinfo("PERDU",listeClic)
                    b1.config(state='normal')
                    compteJH=0 #remise à zéro et sortir de la fonction jeuHM
                    compte=0
                    boucle=0
                    flag="jeuPC"
                    listeClic[:]=[]
                    message['text']=" En attente"
                    return
        if compteJH==compte:      #dernier clic joueur ss erreur  donc passe la main à JeuxPC()  
                    flag="jeuPC"      # je change le flag
                    fen.title("SIMON  Score={}".format(compteJH))
                    JeuxPC()
     
    def JeuxPC():
        global compte
        global compteJH
        global flag
        global boucle
        if flag=="jeuPC": #premier tirage avant guirlande
            for nbBut in range(0,4):    # Boutons inactifs
                            listeB[nbBut].configure(state=DISABLED)
            message['text']=" PC joue..."
            compte+=1   #compteur des jeux PC (0,1,2,3,4...)
            compteJH=0  #compteur des jeux Humain
            boucle=0 #guirlande à comparer au nombre de jeux PC
            valCoul=random.randint(0,3) # nouveau tirage
            listeClic.append(valCoul)  # je rajoute à listeClic
            #print(listeClic)
            flag="jeuHM" # prochain passage avec fen.after(1000, JeuxPC)=suite guirlande
        if boucle<compte:
            #print(boucle,compte,listeClic[boucle])
            listeB[listeClic[boucle]].configure(background=listeCoulOmb[listeClic[boucle]])
            fen.after(200, lambda x=listeClic[boucle]: Ombre(x)) # clignotement du pavé
            boucle+=1
        else: # donc boucle=compte je passe la main après la guirlande aux évènements sur Button
            message['text']=" Humain joue..."
            for nbBut in range(0,4):    # Boutons actifs
                            listeB[nbBut].configure(state=NORMAL)
            return # sortie de JeuxPC et en attente évènement sur un Button (JeuxHM())
        fen.after(1000, JeuxPC)
     
    fen = Tk()
    fen.title("SIMON")
    listeCoul=['red','blue','green','yellow'] #couleurs de base
    listeCoulOmb=['#d93199','#0090d9','#00d9c4','#f4d9a6'] # couleur de clignotement
    listeClic=[]
    listeB=[] # liste des 4 boutons cliquables (référence objet tkinter)
    htB=15
    lgB=25
    taille_grille=2
    for y in range(taille_grille) :    # créatiob de 4 boutons cliquables
            for x in range(taille_grille) :
                b = Button(fen,
                           width=lgB,
                           height=htB,
                           background=listeCoul[(y*2)+(x+1)-1], 
                           activebackground=listeCoul[(y*2)+(x+1)-1],
                           command=lambda ButClic=(y*2)+(x): JeuxHM(ButClic))#de 0 à 3
                listeB.append(b)
                b.grid(row=y, column=x)
    #print(listeB)
    b1=Button(fen,      text="Jouer",command=JeuxPC)
    b1.grid(row=4,column=0,columnspan=2,sticky="NSWE")
    message = Label(fen,font=('sans', 20, 'bold'),text="En attente")
    message.grid(row=3,column=0,columnspan=2,sticky="NSWE")
    compte=0
    flag="jeuPC"
    fen.mainloop()

Discussions similaires

  1. WebGL Canvas Clic Souris
    Par sylvain230 dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 08/04/2011, 14h09
  2. [HTML 5] [canvas] coordonnées d'un clic souris - pointeur (curseur) souris
    Par El Saigneur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/02/2011, 21h52
  3. gestion des clics souris dans une QImage
    Par guil3r dans le forum Débuter
    Réponses: 2
    Dernier message: 14/04/2010, 09h23
  4. Gestion clic souris
    Par lamoua76 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 02/01/2008, 15h31
  5. Réponses: 8
    Dernier message: 18/05/2006, 07h36

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