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 :

problème avec canvas.bind


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut problème avec canvas.bind
    Bonjour!
    J'ai un projet contenant plusieurs mini jeux à rendre pour le bac mais il y en a un qui me pose problème. Tout le programme marche sauf une fonction lancée par le clic de l'utilisateur (je pensais que l'intérieur de la fonction ne fonctionnait pas mais en fait elle n'est même pas lancée). Avant d'apporter quelques modifications aux autres fonctions, mon programme avait la même structure et fonctionnait entièrement, donc je ne comprends vraiment pas. Pouvez vous m'aider?
    Voici le script ( ce qui ne fonctionne pas est en gras):

    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
    from tkinter import *
    import random
    import time
    
    fenetre = Tk()
    fenetre.geometry("500x600")
    
    Fab= Frame (fenetre, width=480, height=400,bg="dark grey")
    Fab.place(x=9, y=5)
    Cab= Canvas(Fab, width=480, height=400, bg="dark grey")
    Cab.place(x=0, y=0)
    VARBALLE=0
    ABN=0
    Cab=Canvas(Fab, width=480,height=400, bg="dark grey", cursor="hand1")
    Cab.place(x=0,y=0)
    
    def initialisationballes():
        global a
        for i in range (0,500):
            a = i
            a=str(a)
            creationballebleue()
        creationballerouge()
        mouvementballe()
    
    def creationballebleue():
        A= random.randint(0,450)
        B=random.randint(0,450)
        ballen=StringVar()
        ballen="balle"+a
        ballen=Cab.create_oval(A,B,A+20,B+20, fill="blue")
    
    def creationballerouge():
        global ballerouge
        A=random.randint(40,300)
        B=random.randint(40,400)
        ballerouge=Cab.create_oval(A,B,A+20,B+20, fill="dark red")
    def ABdebut():
        global Cab
        Cab=Canvas(Fab, width=480,height=400, bg="dark grey", cursor="hand1")
        Cab.place(x=0,y=0)
        initialisationballes()
    
    def ABdebutdetruire():
        Cab.destroy()
        ABdebut()
    def fin():
        time.sleep(5)
        fenetre.destroy()
    
    def mouvementballe():
        global ABN
        Cab.move(ballerouge,3,3)
        ABA= Cab.coords(ballerouge)
        x1 = ABA[0]
        y1 = ABA[1]
        x2 = ABA[2]
        y2 = ABA[3]
        if ABN>= 5:
            fin()
        if x1>= 480:
            ABN=ABN+1
            ABdebutdetruire()
        if y1>= 400:
            ABN=ABN+1
            ABdebutdetruire()
        else:
            fenetre.after(10, mouvementballe)
    
    def Fcab(event):
        print ("1")
        global VARBALLE
        D1= event.x
        E1= event.y
        ABA= Cab.coords(ballerouge)
        x1 = ABA[0]
        y1 = ABA[1]
        x2 = ABA[2]
        y2 = ABA[3]
        if x1 <=D1<=x2 and y1<=E1<=y2:
            VARBALLE = VARBALLE+1
            ABnombre.configure(text=VARBALLE)
        else:
            VARBALLE=VARBALLE
            ABnombre.configure(text=VARBALLE)
            
    Cab.bind("<Button-1>", Fcab)  
    
    Babjouer= Button(fenetre, bg="dark grey", text="réinitialiser", relief=FLAT, command=ABdebut)
    Babjouer.place(x=400, y=475)
    ABregles= Label (fenetre, text="Touchez 20 fois la balle rouge qui se déplace!", fg="black", font="Helvetica")
    ABregles.place(x=10, y=430)
    ABregles2= Label (fenetre, text="Attention, la vitesse augmente", fg="black", font="Helvetica")
    ABregles2.place(x=10, y=460)
    ABregles3= Label (fenetre, text="Cliquez sur JOUER pour commencer", fg="black", font="Helvetica")
    ABregles3.place(x=10, y=490)
    ABregles4= Label (fenetre, text="Vous avez touché la balle    fois", fg="black", font="Helvetica")
    ABregles4.place(x=10, y=520)
    ABnombre= Label (fenetre, text="0", fg="black", font="Helvetica")
    ABnombre.place(x=187, y=520)
          
    VARBALLE=0
    VARBALLE=int(VARBALLE)
    Merci d'avance!! Je rage dessus depuis plus d'une semaine, je n'en peux plus ahah.

  2. #2
    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,

    C'est pas compliqué...
    Relisez votre code et notez les lignes avec l'instruction Cab=Canvas(Fab, width=480,height=400,.
    Puis ligne 87, Cab.bind("<Button-1>", Fcab) sera exécuté sur quel Canvas associé à Cab?

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

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Cela fonctionne!! Merci beaucoup (en effet, il y en avait beaucoup)

Discussions similaires

  1. Problème avec un bind
    Par Feanorin dans le forum Tcl/Tk
    Réponses: 2
    Dernier message: 04/05/2010, 16h31
  2. problème avec canvas
    Par nouvelesprit dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 23/04/2010, 19h45
  3. Problème avec Canvas.ActualHeight
    Par Manhuman dans le forum Silverlight
    Réponses: 2
    Dernier message: 29/05/2009, 09h07
  4. Petit problème avec les Bind et les Séquences
    Par toumaille dans le forum JavaFX
    Réponses: 2
    Dernier message: 16/03/2009, 19h40
  5. Problème avec Canvas et drawImage
    Par marmarnas dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 01/04/2008, 11h26

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