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
.
davy.ai
El código ya proporcionado importa los paquetes necesarios e incluye una función
display_poster
que usaTkinter
yurllib
para mostrar una imagen en unCanvas
.Para usar esta función, simplemente llámala con la URL de la imagen correspondiente y las coordenadas
x
ey
. Por ejemplo, para mostrar una imagen en la posición(630, 350)
, usa el siguiente código:Alternativamente, puedes modificar la función
btn_clicked
para llamar a la funcióndisplay_poster
con una URL de imagen diferente o coordenadas cuando se haga clic en un botón:Ten en cuenta que la URL de la imagen debe ser un enlace directo al archivo de imagen, y las coordenadas
x
ey
deben ser enteros que indiquen la posición donde se debe colocar la esquina superior izquierda de la imagen en elCanvas
.