es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función de tortuga definida no ejecutando todo el código de una sola vez.

Estoy tratando de escribir un programa que me permita trazar algunas coordenadas simples usando el módulo turtle, y para hacerlo más amigable al usuario, quería mostrar una cruz cada vez que el usuario presionara el botón izquierdo del mouse para trazar un punto. Por alguna razón, la última parte de la función cross(), es decir, la última línea de la cruz, no se dibuja ni aparece hasta que se presiona de nuevo el botón izquierdo del mouse. Estoy muy confundido acerca de por qué esto está sucediendo, ya que el código definitivamente se está ejecutando. ¡Cualquier ayuda sería muy apreciada!

“` import turtle as t

wn = t.Screen()
wn.title("gráfico")
wn.setup(width=600, height=600)
wn.tracer(0)
wn.update()

pen = t.Turtle()
pen.color("negro")
pen.shape("clásico")
pen.goto(0, 0)
pen.ht()

x = 10
y = 10

def cross(x, y):
print(x, y)
pen.pensize(2.5)
pen.pu()
pen.goto(x, y)
pen.pd()
pen.seth(225)
pen.color("rojo")
pen.fd(50)
pen.color("negro")

pen.pu()
pen.goto(x, y)
pen.pd()
pen.left(180)
pen.fd(50)

pen.pu()
pen.goto(x, y)
pen.seth(315)
pen.pd()
pen.color("verde")
pen.fd(50)

pen.pu()
pen.goto(x, y)
pen.left(180)
pen.pd()
pen.color("amarillo")
pen.fd(50) #por alguna razón esto no se está haciendo
print("ahora")

cross(x, y)

while True:
wn.update()
wn.onscreenclick(cross)
wn.mainloop()
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que la última línea de la función cross() no se ejecuta hasta que se presiona de nuevo el botón izquierdo del mouse. Esto podría deberse a que se vuelve a llamar a la función cross() cuando se presiona el botón izquierdo del mouse, y la última línea de la función no se ejecuta hasta la segunda vez que se llama. Para solucionarlo, podrías intentar agregar una declaración return al final de la función cross(), para que solo se llame una vez cuando se presione el botón izquierdo del mouse.

Comments are closed.