📅  最后修改于: 2023-12-03 14:51:04.986000             🧑  作者: Mango
PySimpleGUI 是一个新型的用于创建 GUI 程序的 Python 模块。这个模块能够让用户创建出极简、通俗易懂的界面,同时又不失效率。在 PySimpleGUI 中,你可以轻易地在 GUI 界面中添加图片,而本文就会讲述如何将来自 URL 的图片显示在 PySimpleGUI 的界面中。
首先,需要用到 requests
模块请求图片,同时使用 base64
模块把图片转化为 base64 编码。然后,使用 PySimpleGUI
模块创建出 GUI 并加入图片。以下是样例代码:
import requests
import base64
import PySimpleGUI as sg
# 通过 URL 请求图片
response = requests.get('https://www.python.org/static/img/python-logo.png')
# 把图片内容转化为 base64 编码
img_b64 = base64.b64encode(response.content).decode()
# 创建 PySimpleGUI 界面
layout = [
[sg.Image(data=img_b64)],
[sg.Exit()]
]
window = sg.Window('Image URL Demo', layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == 'Exit':
break
window.close()
这段代码将从 URL 请求名为 python-logo.png
的 Python 图片,然后将图片内容转化为 base64 编码,最后显示在 GUI 界面的 Image
中。
这个程序中,我们使用了 requests
模块从 URL 请求了一个图片,并使用 base64
模块将图片转化为了 base64 编码。接下来,我们简单地分析一下代码的逻辑。
response = requests.get('https://www.python.org/static/img/python-logo.png')
这一行代码中,requests.get()
方法从 URL 请求一个资源,并返回一个 Response 对象,存储在变量 response
中。
img_b64 = base64.b64encode(response.content).decode()
这一行代码解析了 response
对象,并使用 base64.b64encode()
将其内容转化为 base64 编码。其中,b64encode()
返回一个 bytes 类型对象,所以解码为字符串使用 decode()
方法。
layout = [
[sg.Image(data=img_b64)],
[sg.Exit()]
]
window = sg.Window('Image URL Demo', layout)
这里我们调用 sg.Image()
方法将 img_b64
作为数据输入,并将创建的对象作为一行放入 layout
中。接着,我们再将 layout
作为参数传给 PySimpleGUI.Window()
方法,得到可操作的界面,存储在变量 window
中。
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == 'Exit':
break
这一部分代码的作用是检查用户是否已经关闭了界面,或点击了 Exit
按钮,并在检测到这些事件时结束循环。
整个过程完成后,我们再调用 window.close()
方法关闭界面。
通过 requests
和 base64
模块,我们轻松地将一张来自 URL 的图片显示在 PySimpleGUI 中。而且与传统 tkinter 模块相比,PySimpleGUI 更加简洁明了,而且使用起来更加便捷。