Dessiner des citrouilles

Fermé
Clement_7057 Messages postés 4 Date d'inscription jeudi 21 novembre 2019 Statut Membre Dernière intervention 26 octobre 2022 - Modifié le 21 nov. 2019 à 17:34
 Clement_7057 - 21 nov. 2019 à 18:45
slt j'ai ce code qui est censé dessiner des citrouilles or pour les citouille de taille 1 et 2 ça ne fonctionne pas. Je suis dessus depuis 4h et aucun moyen de débloquer la situation.
Voici le code:

from tkinter import *
from random import *
tailles=[0,50,100,200]
def dessine_citrouille(x,y,taille):
    can.delete(ALL)
    global tailles
    if taille==1:
        taille=tailles[1]
    elif taille==2:
        taille=tailles[2]
    else:
        taille=tailles[3]

    #bouche
    can.create_polygon(x-taille/2, y+taille/2, x-1/4*taille, y+taille/2, x-3/8*taille, y+3/4*taille, outline="black", fill="yellow")
    can.create_polygon(x-taille/4, y+taille/2, x, y+taille/2, x-1/8*taille, y+3/4*taille, outline="black", fill="yellow")
    can.create_polygon(x, y+taille/2, x+taille/4, y+taille/2, x+1/8*taille, y+3/4*taille, outline="black", fill="yellow")
    can.create_polygon(x+taille/4, y+taille/2, x+taille/2, y+taille/2, x+3/8*taille, y+3/4*taille, outline="black", fill="yellow")

    #oeil droit
    can.create_polygon(x-taille/2, y-taille/8, x-3/4*taille, y-taille/4, x-1/4*taille, y-taille/4,outline="black", fill="black")

    #oeil gauche
    can.create_polygon(x+taille/2, y-taille/8, x+3/4*taille, y-taille/4, x+1/4*taille, y-taille/4,outline="black", fill="black")

    #crête de la citrouille
    can.create_polygon(x, y-taille, x+1/8*taille, y-9/8*taille, x-1/8*taille, y-9/8*taille,outline="black", fill="green")

    #narine gauche
    can.create_oval(x-1/8*taille, y+1/7*taille, x-1/7*taille, y+1/8*taille,outline='black',fill='orange')

    #narine droite
    can.create_oval(x+1/8*taille, y+1/7*taille, x+1/7*taille, y+1/8*taille,outline='black',fill='orange')


fen=Tk()
w,h=fen.winfo_screenwidth(),fen.winfo_screenheight()
can=Canvas(fen,height=h,width=w,bg='white')
can.pack()
b=Button(can,text='citrouille', command=dessine_citrouille(randint(10,w),randint(10,h),randint(1,3)), bg='orangered')
b.place(x=1,y=640)
b2=Button(can,text='quitter',command=fen.destroy,bg='black',fg='white')
b2.place(x=1,y=560)
fen.mainloop()


De plus le bouton ne fonctionne pas.
merci de votre aide
A voir également:

3 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
21 nov. 2019 à 14:20
Bonjour,

Merci d'utiliser la balise < code python> autour du copié-collé de votre code source, sinon celui-ci est illisible.

Par ailleurs, « ça ne fonctionne pas » est très vague. Y a-t-il un message d'erreur ? Un résultat non conforme ? Aucun résultat du tout ?

Xavier
0
Bonsoir,

De plus le bouton ne fonctionne pas

Ton problème se situe justement là, est c'est une erreur récurrente des débutants.

b=Button(can,text='citrouille', command=dessine_citrouille(randint(10,w),randint(10,h),randint(1,3)), bg='orangered') 


La commande du bouton sera exécutée au chargement du script.
Tu peux modifier la fonction dessine_citrouille et placer les randint dedans, ce qui ne change rien au déroulement du script.

def dessine_citrouille():
    x = randint(10, w)
    y = randint(10,h)
    taille = choice((50,100,200))
    # reste du code de la fonction


Et donc pour le button.

b=Button(can,text='citrouille', command=dessine_citrouille, bg='orangered') 
0
Clement_7057
21 nov. 2019 à 18:45
Non pas de messages d'erreurs et pas de résultat.
Mais finalement après 2h suplementaires, j'ai créé une fonction dessiner qui reprend dessine citrouille et cela fonctionne
Merci quand même de votre aide.
0