📜  在 pysimplegui 中显示来自 url 的图像 (1)

📅  最后修改于: 2023-12-03 14:51:04.986000             🧑  作者: Mango

在 PySimpleGUI 中显示来自 URL 的图像

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 编码。接下来,我们简单地分析一下代码的逻辑。

  1. 使用 requests 模块从 URL 请求图片:
response = requests.get('https://www.python.org/static/img/python-logo.png')

这一行代码中,requests.get() 方法从 URL 请求一个资源,并返回一个 Response 对象,存储在变量 response 中。

  1. 使用 base64 模块将图片转化为 base64 编码:
img_b64 = base64.b64encode(response.content).decode()

这一行代码解析了 response 对象,并使用 base64.b64encode() 将其内容转化为 base64 编码。其中,b64encode() 返回一个 bytes 类型对象,所以解码为字符串使用 decode() 方法。

  1. 创建 GUI 界面并加入图片:
layout = [
    [sg.Image(data=img_b64)],
    [sg.Exit()]
]
window = sg.Window('Image URL Demo', layout)

这里我们调用 sg.Image() 方法将 img_b64 作为数据输入,并将创建的对象作为一行放入 layout 中。接着,我们再将 layout 作为参数传给 PySimpleGUI.Window() 方法,得到可操作的界面,存储在变量 window 中。

  1. 事件循环:
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == 'Exit':
        break

这一部分代码的作用是检查用户是否已经关闭了界面,或点击了 Exit 按钮,并在检测到这些事件时结束循环。

整个过程完成后,我们再调用 window.close() 方法关闭界面。

结论

通过 requestsbase64 模块,我们轻松地将一张来自 URL 的图片显示在 PySimpleGUI 中。而且与传统 tkinter 模块相比,PySimpleGUI 更加简洁明了,而且使用起来更加便捷。