我正在开发一个天气应用程序并添加一些我正在考虑添加天气地图的香料,因此访问 https://openweathermap.org/api/weathermaps 并获得了包含图像的 URL。我研究了许多在 Tkinter Widget 上显示该图像的方法,但没有一个有效。它显示图像的大小,但不显示图像本身。这是我的代码。非常感谢。
from tkinter import *
from PIL import ImageTk, Image
import requests
import urllib.request
import base64
root = Tk()
root.title("Weather")
link = "https://tile.openweathermap.org/map/pressure_new/0/0/0.png?appid={APIkey}"
class WebImage:
def __init__(self,url):
u = urllib.request.urlopen(url)
raw_data = u.read()
u.close()
self.image = PhotoImage(data=base64.encodebytes(raw_data))
def get(self):
return self.image
img = WebImage(link_6).get()
imagelab = Label(root, image = img)
imagelab.grid(row = 0, column = 0)
root.mainloop()
答案 0 :(得分:0)
在这里试试这个:
from tkinter import *
from PIL import ImageTk, Image
import requests
from io import BytesIO
root = Tk()
root.title("Weather")
link = "yourlink/image.jpg"
class WebImage:
def __init__(self,url):
u = requests.get(url)
self.image = ImageTk.PhotoImage(Image.open(BytesIO(u.content)))
def get(self):
return self.image
img = WebImage(link).get()
imagelab = Label(root, image = img)
imagelab.grid(row = 0, column = 0)
root.mainloop()
答案 1 :(得分:0)
如果链接中的图像是 PNG,您的代码就可以正常工作。可能是链接中的图片是 JPEG,tkinter.PhotoImage
不支持。
您可以使用支持各种图像格式的 Pillow
模块:
import tkinter as tk
import urllib.request
#import base64
import io
from PIL import ImageTk, Image
root = tk.Tk()
root.title("Weather")
link = "https://openweathermap.org/themes/openweathermap/assets/img/logo_white_cropped.png"
class WebImage:
def __init__(self, url):
with urllib.request.urlopen(url) as u:
raw_data = u.read()
#self.image = tk.PhotoImage(data=base64.encodebytes(raw_data))
image = Image.open(io.BytesIO(raw_data))
self.image = ImageTk.PhotoImage(image)
def get(self):
return self.image
img = WebImage(link).get()
imagelab = tk.Label(root, image=img)
imagelab.grid(row=0, column=0)
root.mainloop()