Foros Python

Versión completa: Cómo puedo hacer que una imagen aparezca en un lugar y luego aparezca en otra ubicaci
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Quiero que al presionar un botón se cree un comando para que desaparezca un png al cabo de unos segundos, y luego aparezca en otra ubicación, y luego en otra a los pocos segundos, y luego en otra, como si se estuviera moviendo. Traté de hacerlo con varias definiciones, con dormir y con el widget de destrucción, pero todavía aparece todo al mismo tiempo y no sé cómo corregirlo. Creo que se podría hacer con "for" pero todavía no sé cómo usarlo. Me ayudan porfavor?


''''
def destroy_widget(widget):
    widget.destroy()
   
def texto():
    link=tk.StringVar()
    no=tk.Label(ventana,text="Hay algo en el camino...",font=("Times",18,"bold"),anchor='n',width=24, height=3,bg="#137420", fg="#9AD51A",bd=25,relief = "ridge")
    no.place(x=430,y = 400,anchor ='center')
    caja = tk.Entry(ventana,textvariable=link,width=50,state="readonly")
    caja.place(x=430,y = 410,anchor ='center')
    lin="https://www.tumblr.com/blog/mundo000011"
    link.set(lin)

def saliendo():
    canvas.delete(ima)
    ima2 = canvas.create_image(247,780,image=myimg)
    ventana.after(5000, destroy_widget, ima2)
    ima3 = canvas.create_image(247,500,image=myimg)
    ventana.after(5000, destroy_widget, ima3)
    texto()



def salir():

    if trad["text"]=="ar.ab.iz.":
       
        trad.config(text=leta)
        saliendo()

ventana=tk.Tk()
ventana.title("Bosque")
ventana.geometry('900x800')
ventana.resizable(0,0)

myimg = tk.PhotoImage(file='circlo.png')
posx=70
posy=235
ima = canvas.create_image(78,235,image=myimg)

boton2 = tk.Button(text="  Ir  ",font=("Verdana",16), command=salir)
boton2.config(bg="#135C3F", fg="#D7D731")
boton2.place(x=746,y=379)

'''
(24-06-2021, 11:45 PM)Aesio93 escribió: [ -> ]Quiero que al presionar un botón se cree un comando para que desaparezca un png al cabo de unos segundos, y luego aparezca en otra ubicación, y luego en otra a los pocos segundos, y luego en otra, como si se estuviera moviendo. Traté de hacerlo con varias definiciones, con dormir y con el widget de destrucción, pero todavía aparece todo al mismo tiempo y no sé cómo corregirlo. Creo que se podría hacer con "for" pero todavía no sé cómo usarlo. Me ayudan porfavor?


''''
def destroy_widget(widget):
    widget.destroy()
   
def texto():
    link=tk.StringVar()
    no=tk.Label(ventana,text="Hay algo en el camino...",font=("Times",18,"bold"),anchor='n',width=24, height=3,bg="#137420", fg="#9AD51A",bd=25,relief = "ridge")
    no.place(x=430,y = 400,anchor ='center')
    caja = tk.Entry(ventana,textvariable=link,width=50,state="readonly")
    caja.place(x=430,y = 410,anchor ='center')
    lin="https://www.tumblr.com/blog/mundo000011"
    link.set(lin)

def saliendo():
    canvas.delete(ima)
    ima2 = canvas.create_image(247,780,image=myimg)
    ventana.after(5000, destroy_widget, ima2)
    ima3 = canvas.create_image(247,500,image=myimg)
    ventana.after(5000, destroy_widget, ima3)
    texto()



def salir():

    if trad["text"]=="ar.ab.iz.":
       
        trad.config(text=leta)
        saliendo()

ventana=tk.Tk()
ventana.title("Bosque")
ventana.geometry('900x800')
ventana.resizable(0,0)

myimg = tk.PhotoImage(file='circlo.png')
posx=70
posy=235
ima = canvas.create_image(78,235,image=myimg)

boton2 = tk.Button(text="  Ir  ",font=("Verdana",16), command=salir)
boton2.config(bg="#135C3F", fg="#D7D731")
boton2.place(x=746,y=379)

'''

Buenas:
Yo no sé muy bien qué es lo que necesitas y no lo he probado  pero creo que podría aportar alguna sugerencia ya que yo tengo algo similiar aunque no con una imagen sino con una ventana.

El módulo threading tiene una función llamada Timer que puede que sea justo lo que necesites ya que es un "temporizador". Yo lo tengo importado así:
from threading import Timer

Esa función te permite realizar cualquier tarea/función en el tiempo que le indiques (mediante un float).
Para que desaparezca la imagen bueno, se me ocurre que podrías usar el método place_forget() para borrar la localización de ese widget(la imagen) y mediante Timer asignarle una función con la nueva localización. No lo he probado porque no he tenido tiempo pero se me ocurre algo así.