Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
有时候需要在GUI中展示网络图片,下面介绍如何在tkinter中展示网络图片,以下代码适用于python3.7以上的版本。
需要用到的库如下:
tkinter: GUI库
requests: 下载图片数据
io: 存放图片数据
pillow: 转换为图片并展示在tkinter中
安装第三方库
pip install requests pillow
接下来是代码
import io
from PIL import Image, ImageTk
import tkinter as tk
import requests
root = tk.Tk()
# 图片链接
url = "https://www.python.org/static/img/python-logo@2x.png"
# 下载图片数据
image_bytes = requests.get(url).content
# 将数据存放到data_stream中
data_stream = io.BytesIO(image_bytes)
# 转换为图片格式
pil_image = Image.open(data_stream)
# 获取图片的宽度和高度
w, h = pil_image.size
# 获取图片的文件名
fname = url.split('/')[-1]
sf = "{} ({}x{})".format(fname, w, h)
# 设置窗口title
root.title(sf)
# 将pil格式的图片转换为tk格式的image
tk_image = ImageTk.PhotoImage(pil_image)
# 创建个label组件, root作为父节点
label = tk.Label(root, image=tk_image, bg='black')
# 设置一些padding
label.pack(padx=5, pady=5)
root.mainloop()
最后效果如下