Dibujar calabazas

Clement_7057 Mensajes publicados 5 Estado Miembro -  
 Clement_7057 -
Voici la traduction fidèle en espagnol du texte fourni (sans modifier le sens) : Hola, tengo este código que se supone que dibuja calabazas, pero para las calabazas de tamaño 1 y 2 no funciona. Llevo 4 horas atascado y no hay forma de desbloquear la situación. Aquí está el código:

from tkinter import * from random import * tamaños=[0,50,100,200] def dibuja_calabaza(x,y,tamano): can.delete(ALL) global tamaños if tamano==1: tamano=tamaños[1] elif tamano==2: tamano=tamaños[2] else: tamano=tamaños[3] #boca can.create_polygon(x-tamano/2, y+tamano/2, x-1/4*tamano, y+tamano/2, x-3/8*tamano, y+3/4*tamano, outline="black", fill="yellow") can.create_polygon(x-tamano/4, y+tamano/2, x, y+tamano/2, x-1/8*tamano, y+3/4*tamano, outline="black", fill="yellow") can.create_polygon(x, y+tamano/2, x+tamano/4, y+tamano/2, x+1/8*tamano, y+3/4*tamano, outline="black", fill="yellow") can.create_polygon(x+tamano/4, y+tamano/2, x+tamano/2, y+tamano/2, x+3/8*tamano, y+3/4*tamano, outline="black", fill="yellow") #ojo derecho can.create_polygon(x-tamano/2, y-tamano/8, x-3/4*tamano, y-tamano/4, x-1/4*tamano, y-tamano/4,outline="black", fill="black") #ojo izquierdo can.create_polygon(x+tamano/2, y-tamano/8, x+3/4*tamano, y-tamano/4, x+1/4*tamano, y-tamano/4,outline="black", fill="black") #cresta de la calabaza can.create_polygon(x, y-tamano, x+1/8*tamano, y-9/8*tamano, x-1/8*tamano, y-9/8*tamano,outline="black", fill="green") #narinas izquierda can.create_oval(x-1/8*tamano, y+1/7*tamano, x-1/7*tamano, y+1/8*tamano,outline='black',fill='orange') #narinas derecha can.create_oval(x+1/8*tamano, y+1/7*tamano, x+1/7*tamano, y+1/8*tamano,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='calabaza', command=dibua_calabaza(randint(10,w),randint(10,h),randint(1,3)), bg='orangered') b.place(x=1,y=640) b2=Button(can,text='cerrar',command=fen.destroy,bg='black',fg='white') b2.place(x=1,y=560) fen.mainloop()


Además, el botón no funciona.
gracias por tu ayuda

3 respuestas

  1. Reivax962 Mensajes publicados 3742 Estado Miembro 1 011
     
    Hola,

    Gracias por usar la etiqueta < code python> alrededor del copiado pegado de su código fuente, de lo contrario no se puede leer.

    Por otro lado, « no funciona » es muy vago. ¿Hay algún mensaje de error? ¿Un resultado que no cumple? ¿Ningún resultado en absoluto?

    Xavier
    0
  2. trifou
     
    Buenas noches,

    Además el botón no funciona

    Tu problema está justamente ahí, y es un error recurrente de los principiantes.

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


    La orden del botón se ejecutará al cargar el script.
    Puedes modificar la función dessine_citrouille y colocar los randint dentro, lo que no cambia el desarrollo del script.

    def dessine_citrouille(): x = randint(10, w) y = randint(10,h) taille = choice((50,100,200)) # resto del código de la función


    Y entonces para el button.

    b=Button(can,text='citrouille', command=dessine_citrouille, bg='orangered') 
    0
  3. Clement_7057
     
    No más mensajes de error y ningún resultado.
    Pero al final, después de 2 horas suplementarias, he creado una función dibujar que toma dibuja calabaza y eso funciona
    Gracias de todas formas por vuestra ayuda.
    0