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.

Cómo mostrar una foto en una aplicación Tkinter desde una URL usando un lienzo.

import io
import base64

try:
    # Python2
    import Tkinter as tk
    from urllib2 import urlopen
except ImportError:
    # Python3
    import tkinter as tk
    from urllib.request import urlopen

def display_poster(image_url, x, y):
    # image_url = "http://i46.tinypic.com/r9oh0j.gif"

    image_byt = urlopen(image_url).read()
    image_b64 = base64.encodebytes(image_byt)
    photo = tk.PhotoImage(data=image_b64)

    # create a white canvas
    cv = tk.Canvas(bg='white')
    cv.pack(side='top', fill='both', expand='yes')

    # put the image on the canvas with
    # create_image(xpos, ypos, image, anchor)
    cv.create_image(x, y, image=photo, anchor='nw')

def btn_clicked():
    display_poster("http://i46.tinypic.com/r9oh0j.gif", 630, 350)

He intentado la solución del paquete base64, pero no está funcionando. Sería genial si alguien pudiera ayudarme con los paquetes que necesito importar y la función para mostrar la imagen usando Canvas.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El código ya proporcionado importa los paquetes necesarios e incluye una función display_poster que usa Tkinter y urllib para mostrar una imagen en un Canvas.

    Para usar esta función, simplemente llámala con la URL de la imagen correspondiente y las coordenadas x e y. Por ejemplo, para mostrar una imagen en la posición (630, 350), usa el siguiente código:

    display_poster("http://i46.tinypic.com/r9oh0j.gif", 630, 350)
    

    Alternativamente, puedes modificar la función btn_clicked para llamar a la función display_poster con una URL de imagen diferente o coordenadas cuando se haga clic en un botón:

    def btn_clicked():
        display_poster("http://example.com/image.gif", 400, 200)
    

    Ten en cuenta que la URL de la imagen debe ser un enlace directo al archivo de imagen, y las coordenadas x e y deben ser enteros que indiquen la posición donde se debe colocar la esquina superior izquierda de la imagen en el Canvas.

Comments are closed.