Animation programme Python

Résolu/Fermé
Utilisateur anonyme - Modifié par Whismeril le 16/05/2015 à 08:01
 Naacs - 20 mai 2015 à 21:41
Bonjour, je cherche à animer mon jeux avec quelque chose de sympa mais je ne sais comment faire...
Voici mon programme :
from tkinter import *
from tkinter.messagebox import * # boîte de dialogue
import random


def reponse(event):
    global compteur
    if resultat.get() == m:
        # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
        #showinfo('Résultat','Bonne réponse')
        
        compteur+=1
    #else:
        # le mot de passe est incorrect : on affiche une boîte de dialogue
        #showwarning('Résultat','Mauvaise réponse !')
        #resultat.set('')
    Mafenetre.destroy()

def calcul_effectue(choix,a,b):
   
    if choix.get() == 1:
        return a+b
    elif choix.get() == 2:
        return a-b
    else :
        return a*b
    
    
        
def affichage_calcul(choix,a,b):
    if choix.get() == 1:
        return str(a)+"+"+str(b)
    elif choix.get() == 2:
        return str(a)+"-"+str(b)
    else :
        return str(a)+"x"+str(b)


def choise():
    
    if choix.get() in range(1,4):
            fen.destroy()
    else:
        fen.destroy()
        showwarning('Calcul mental','Fin du jeu')
        exit(1)


fen=Tk()
fen.title('Menu')
fen.geometry("300x300")


labelsomme = Label(fen,text='Somme : taper 1')
labelsoustraction = Label(fen,text='Soustraction : taper 2')
labelmultiplication = Label(fen,text='Multiplication : taper 3')
labelquitter = Label(fen,text='Quitter : taper 4')

labelsomme.grid(row=0,column=0)
labelsoustraction.grid(row=1,column=0)
labelmultiplication.grid(row=2,column=0)
labelquitter.grid(row=3,column=0)

choix= IntVar()

Champ1 = Entry(fen,textvariable= choix,bg ='bisque', fg='maroon')
Champ1.delete(0,END)
#choix.set("entrer votre choix")
Champ1.grid(row=4,column=0)
Champ1.focus_set()
Champ1.selection_range(0,END)



Bouton1 = Button(fen, text ='Valider', command = choise)
Bouton1.grid(row=5,column=0)

fen.mainloop()

compteur = 0
resultat = None

for i in range(5):
    print(i)
    # Création de la fenêtre principale (main window)
    Mafenetre = Tk()
    Mafenetre.title('Jeu de Calcul Mental')
    Mafenetre.update()
    Mafenetre.geometry("300x300")
    

    nbre1=random.randint(1,10)
    nbre2=random.randint(1,10)
    m=calcul_effectue(choix,nbre1,nbre2)
    

    # Création d'un widget Label (texte 'le calcul à effectué')
    Frame1 = Frame(Mafenetre, borderwidth=2, relief=GROOVE)
    Frame1.pack(side=TOP, padx=5, pady=5)
    Label(Frame1, text=affichage_calcul(choix,nbre1,nbre2)).pack(padx=5, pady=10)

    # Création d'un widget Label (texte 'votre réponse')
    Frame2 = Frame(Mafenetre, borderwidth=2, relief=GROOVE,width=25)
    Frame2.pack(side=BOTTOM ,padx=5, pady=20)
    Label(Frame2, text="votre réponse").pack(padx=5, pady=10)


    # Création d'un widget Entry (champ de saisie)
    resultat= IntVar()
    Champ = Entry(Frame2, textvariable= resultat,bg ='bisque', fg='maroon',width=25)
    Champ.delete(0,END)
    Champ.pack(side = LEFT, padx = 5, pady = 30)
    Champ.bind("<Return>",reponse)
    Champ.focus_set()
    Champ.selection_range(0,END)
    # Création d'un widget Button (bouton Valider)
    #Bouton = Button(Frame2, text ='Valider', command = reponse)
    #Bouton.pack(side = BOTTOM, padx = 5, pady = 40)

    # Création d'un widget Label (texte 'compteur')
    Frame2 = Frame(Mafenetre, borderwidth=2, relief=GROOVE)
    Frame2.pack(side=BOTTOM, padx=5, pady=50)
    Label(Frame2, text="compteur  "+str(compteur)+" sur " + str(i)).pack(padx=5, pady=10)

    Mafenetre.mainloop()

Mafenetre2 = Tk()
Mafenetre2.title('Pourcentage obtenu')
Mafenetre2.geometry("500x300")
labelpourcentage = Label(Mafenetre2,text='Pourcentage obtenu : '+ str(compteur*100/5)+" %")
labelpourcentage.pack(side = TOP, padx=5, pady=10)
Mafenetre2.mainloop()

photo = PhotoImage(file=".png")

canvas = Canvas(fenetre,width=800, height=600)
canvas.create_image(0, 0, anchor=NW, image=photo)
canvas.pack()

Et voilà ce que je veux obtenir à peux près :


Merci d'avance pour votre aide.

EDIT: Ajout de la coloration syntaxique.
A voir également:

4 réponses

dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 482
16 mai 2015 à 06:03
Salut
le code n'est pas lisible, utilise le bouton "Code" dans l'éditeur pour activer la coloration syntaxique stp.
0
Utilisateur anonyme
16 mai 2015 à 08:02
Bonjour, je viens de corriger cela
0
dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 482 > Utilisateur anonyme
16 mai 2015 à 10:49
Merci
0
Utilisateur anonyme
16 mai 2015 à 10:54
Merci
0
dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 482
Modifié par dsy73 le 16/05/2015 à 10:58
Ton code fonctionne, il suffisait de mettre mainloop() à la fin et de choisir la bonne fenêtre pour afficher ton image.
Mafenetre2 = Tk()
Mafenetre2.title('Pourcentage obtenu')
Mafenetre2.geometry("500x300")
labelpourcentage = Label(Mafenetre2,text='Pourcentage obtenu : '+ str(compteur*100/5)+" %")
labelpourcentage.pack(side = TOP, padx=5, pady=10)
photo = PhotoImage(file="test.png")
canvas = Canvas(Mafenetre2, width=800, height=600)
canvas.create_image(0, 0, anchor=NW, image=photo)
canvas.pack()
Mafenetre2.mainloop()


Lorsque tu lances ton programme, il est préférable de le faire dans une console pour voir tous les message d'erreur. Tu avais une erreur à la fermeture.
0
Utilisateur anonyme
16 mai 2015 à 11:22
Comment je fais pour choisit mon image?
0
dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 482 > Utilisateur anonyme
16 mai 2015 à 12:40
Je ne comprends pas la question, il suffit de mettre le nom du fichier, dans mon exemple c'est test.png
0
Utilisateur anonyme
16 mai 2015 à 13:02
Je mets le nom de l'image mais l'image ne s'affiche pas quand je lance le programme
0
dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 482 > Utilisateur anonyme
16 mai 2015 à 13:29
Peux-tu mettre le code stp ? N'oublie pas d'utiliser le bouton "Code"
0
from tkinter import *
from tkinter.messagebox import * # boîte de dialogue
import random


def reponse(event):
    global compteur
    if resultat.get() == m:
        # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
        #showinfo('Résultat','Bonne réponse')
        
        compteur+=1
    #else:
        # le mot de passe est incorrect : on affiche une boîte de dialogue
        #showwarning('Résultat','Mauvaise réponse !')
        #resultat.set('')
    Mafenetre.destroy()

def calcul_effectue(choix,a,b):
   
    if choix.get() == 1:
        return a+b
    elif choix.get() == 2:
        return a-b
    else :
        return a*b
    
    
        
def affichage_calcul(choix,a,b):
    if choix.get() == 1:
        return str(a)+"+"+str(b)
    elif choix.get() == 2:
        return str(a)+"-"+str(b)
    else :
        return str(a)+"x"+str(b)


def choise():
    
    if choix.get() in range(1,4):
            fen.destroy()
    else:
        fen.destroy()
        showwarning('Calcul mental','Fin du jeu')
        exit(1)


fen=Tk()
fen.title('Menu')
fen.geometry("300x300")


labelsomme = Label(fen,text='Somme : taper 1')
labelsoustraction = Label(fen,text='Soustraction : taper 2')
labelmultiplication = Label(fen,text='Multiplication : taper 3')
labelquitter = Label(fen,text='Quitter : taper 4')

labelsomme.grid(row=0,column=0)
labelsoustraction.grid(row=1,column=0)
labelmultiplication.grid(row=2,column=0)
labelquitter.grid(row=3,column=0)

choix= IntVar()

Champ1 = Entry(fen,textvariable= choix,bg ='bisque', fg='maroon')
Champ1.delete(0,END)
#choix.set("entrer votre choix")
Champ1.grid(row=4,column=0)
Champ1.focus_set()
Champ1.selection_range(0,END)



Bouton1 = Button(fen, text ='Valider', command = choise)
Bouton1.grid(row=5,column=0)

fen.mainloop()

compteur = 0
resultat = None

for i in range(5):
    print(i)
    # Création de la fenêtre principale (main window)
    Mafenetre = Tk()
    Mafenetre.title('Jeu de Calcul Mental')
    Mafenetre.update()
    Mafenetre.geometry("300x300")
    

    nbre1=random.randint(1,10)
    nbre2=random.randint(1,10)
    m=calcul_effectue(choix,nbre1,nbre2)
    

    # Création d'un widget Label (texte 'le calcul à effectué')
    Frame1 = Frame(Mafenetre, borderwidth=2, relief=GROOVE)
    Frame1.pack(side=TOP, padx=5, pady=5)
    Label(Frame1, text=affichage_calcul(choix,nbre1,nbre2)).pack(padx=5, pady=10)

    # Création d'un widget Label (texte 'votre réponse')
    Frame2 = Frame(Mafenetre, borderwidth=2, relief=GROOVE,width=25)
    Frame2.pack(side=BOTTOM ,padx=5, pady=20)
    Label(Frame2, text="votre réponse").pack(padx=5, pady=10)


    # Création d'un widget Entry (champ de saisie)
    resultat= IntVar()
    Champ = Entry(Frame2, textvariable= resultat,bg ='bisque', fg='maroon',width=25)
    Champ.delete(0,END)
    Champ.pack(side = LEFT, padx = 5, pady = 30)
    Champ.bind("<Return>",reponse)
    Champ.focus_set()
    Champ.selection_range(0,END)
    # Création d'un widget Button (bouton Valider)
    #Bouton = Button(Frame2, text ='Valider', command = reponse)
    #Bouton.pack(side = BOTTOM, padx = 5, pady = 40)

    # Création d'un widget Label (texte 'compteur')
    Frame2 = Frame(Mafenetre, borderwidth=2, relief=GROOVE)
    Frame2.pack(side=BOTTOM, padx=5, pady=50)
    Label(Frame2, text="compteur  "+str(compteur)+" sur " + str(i)).pack(padx=5, pady=10)

    Mafenetre.mainloop()

Mafenetre2 = Tk()
Mafenetre2.title('Pourcentage obtenu')
Mafenetre2.geometry("500x300")
labelpourcentage = Label(Mafenetre2,text='Pourcentage obtenu : '+ str(compteur*100/5)+" %")
labelpourcentage.pack(side = TOP, padx=5, pady=10)
Mafenetre2.mainloop()

photo = PhotoImage(file=".png")

canvas = Canvas(fenetre,width=800, height=600)
canvas.create_image(0, 0, anchor=NW, image=photo)
canvas.pack()
Mafenetre2.mainloop()
0
Utilisateur anonyme
16 mai 2015 à 13:08
J'aimerai changer ce menu :
0
from tkinter import *
from tkinter.messagebox import * # boîte de dialogue
import random


def reponse(event):
    global compteur
    if resultat.get() == m:
        # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
        #showinfo('Résultat','Bonne réponse')
        
        compteur+=1
    #else:
        # le mot de passe est incorrect : on affiche une boîte de dialogue
        #showwarning('Résultat','Mauvaise réponse !')
        #resultat.set('')
    Mafenetre.destroy()

def calcul_effectue(choix,a,b):
   
    if choix.get() == 1:
        return a+b
    elif choix.get() == 2:
        return a-b
    else :
        return a*b
    
    
        
def affichage_calcul(choix,a,b):
    if choix.get() == 1:
        return str(a)+"+"+str(b)
    elif choix.get() == 2:
        return str(a)+"-"+str(b)
    else :
        return str(a)+"x"+str(b)


def choise():
    
    if choix.get() in range(1,4):
            fen.destroy()
    else:
        fen.destroy()
        showwarning('Calcul mental','Fin du jeu')
        exit(1)


fen=Tk()
fen.title('Menu')
fen.geometry("300x300")


labelsomme = Label(fen,text='Somme : taper 1')
labelsoustraction = Label(fen,text='Soustraction : taper 2')
labelmultiplication = Label(fen,text='Multiplication : taper 3')
labelquitter = Label(fen,text='Quitter : taper 4')

labelsomme.grid(row=0,column=0)
labelsoustraction.grid(row=1,column=0)
labelmultiplication.grid(row=2,column=0)
labelquitter.grid(row=3,column=0)

choix= IntVar()

Champ1 = Entry(fen,textvariable= choix,bg ='bisque', fg='maroon')
Champ1.delete(0,END)
#choix.set("entrer votre choix")
Champ1.grid(row=4,column=0)
Champ1.focus_set()
Champ1.selection_range(0,END)



Bouton1 = Button(fen, text ='Valider', command = choise)
Bouton1.grid(row=5,column=0)

fen.mainloop()

compteur = 0
resultat = None

for i in range(5):
    print(i)
    # Création de la fenêtre principale (main window)
    Mafenetre = Tk()
    Mafenetre.title('Jeu de Calcul Mental')
    Mafenetre.update()
    Mafenetre.geometry("300x300")
    

    nbre1=random.randint(1,10)
    nbre2=random.randint(1,10)
    m=calcul_effectue(choix,nbre1,nbre2)
    

    # Création d'un widget Label (texte 'le calcul à effectué')
    Frame1 = Frame(Mafenetre, borderwidth=2, relief=GROOVE)
    Frame1.pack(side=TOP, padx=5, pady=5)
    Label(Frame1, text=affichage_calcul(choix,nbre1,nbre2)).pack(padx=5, pady=10)

    # Création d'un widget Label (texte 'votre réponse')
    Frame2 = Frame(Mafenetre, borderwidth=2, relief=GROOVE,width=25)
    Frame2.pack(side=BOTTOM ,padx=5, pady=20)
    Label(Frame2, text="votre réponse").pack(padx=5, pady=10)


    # Création d'un widget Entry (champ de saisie)
    resultat= IntVar()
    Champ = Entry(Frame2, textvariable= resultat,bg ='bisque', fg='maroon',width=25)
    Champ.delete(0,END)
    Champ.pack(side = LEFT, padx = 5, pady = 30)
    Champ.bind("<Return>",reponse)
    Champ.focus_set()
    Champ.selection_range(0,END)
    # Création d'un widget Button (bouton Valider)
    #Bouton = Button(Frame2, text ='Valider', command = reponse)
    #Bouton.pack(side = BOTTOM, padx = 5, pady = 40)

    # Création d'un widget Label (texte 'compteur')
    Frame2 = Frame(Mafenetre, borderwidth=2, relief=GROOVE)
    Frame2.pack(side=BOTTOM, padx=5, pady=50)
    Label(Frame2, text="compteur  "+str(compteur)+" sur " + str(i)).pack(padx=5, pady=10)

    Mafenetre.mainloop()

Mafenetre2 = Tk()
Mafenetre2.title('Pourcentage obtenu')
Mafenetre2.geometry("500x300")
labelpourcentage = Label(Mafenetre2,text='Pourcentage obtenu : '+ str(compteur*100/5)+" %")
labelpourcentage.pack(side = TOP, padx=5, pady=10)
Mafenetre2.mainloop()

photo = PhotoImage(file=".png")

canvas = Canvas(fenetre,width=800, height=600)
canvas.create_image(0, 0, anchor=NW, image=photo)
canvas.pack()
0
Utilisateur anonyme
16 mai 2015 à 13:52
Ce serait bien que tu suive la procédure que je t'ai déjà indiquée (en édit dans ton premier message), je ne vais pas passer ma journée à corriger ta coloration
0
Utilisateur anonyme
16 mai 2015 à 13:58
Excuse moi, merci
0
Utilisateur anonyme
20 mai 2015 à 18:33
Pouvez vous supprimer le sujet s'il vous plaît ?
0
Utilisateur anonyme > Utilisateur anonyme
20 mai 2015 à 19:22
Bonsoir, non, le but du forum n'est pas seulement de donner au demandeur les outils et pistes pour résoudre son problème, mais aussi de permettre à un visiteur futur de pouvoir en profiter.
0
Utilisateur anonyme
20 mai 2015 à 19:46
Je ne veux pas que mon programme soit repris
0