Python图形界面设计之如何选择图片显示?

使用python的PySimpleGUI库,如果我打开文件选择器后选择了一张图片并且想让该图片显示到我的窗口里需要调用什么方法?

可以使用PIL库中的Image元素来显示图片。具体实现方法如下:

import PySimpleGUI as sg
from PIL import Image, ImageTk

layout = [[sg.Image(key='-IMAGE-')], [sg.Button('选择图片'), sg.Button('退出')]]
window = sg.Window('显示图片', layout)

while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, '退出'):
        break
    elif event == '选择图片':
        filename = sg.popup_get_file('选择图片', default_extension='.png', file_types=(('PNG Files', '*.png'), ('JPEG Files', '*.jpg')))
        if filename:
            # 打开图像并缩放
            image = Image.open(filename)
            image = image.resize((512, 512), Image.ANTIALIAS)

            # 将图像转换为PhotoImage对象
            photo_image = ImageTk.PhotoImage(image)

            # 更新Image元素
            window['-IMAGE-'].update(data=photo_image)

window.close()

以下内容部分参考ChatGPT模型:


可以使用PySimpleGUI的Image元素来显示图片。具体步骤如下:

  1. 使用PySimpleGUI的FileBrowse元素来打开文件选择器,让用户选择图片文件
  2. 使用Pillow库(也叫PIL)来打开图片文件,并将其转换为PySimpleGUI支持的格式
  3. 将转换后的图片数据传递给PySimpleGUI的Image元素来显示图片

下面是一个示例代码:

import PySimpleGUI as sg
from PIL import Image

# 定义窗口布局
layout = [[sg.Text('选择一张图片:')],
          [sg.Input(key='file'), sg.FileBrowse()],
          [sg.Image(key='image')]]

# 创建窗口
window = sg.Window('显示图片', layout)

# 事件循环
while True:
    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break
    if event == 'FileBrowse':
        # 用户选择文件后,将图片显示到窗口中
        filename = values['file']
        if filename:
            # 使用Pillow库打开图片文件,并转换为PySimpleGUI支持的格式
            with Image.open(filename) as img:
                img_data = img.tobytes()
                size = img.size
            # 将图片数据传递给Image元素来显示图片
            window['image'].update(data=img_data, size=size)

# 关闭窗口
window.close()

如果我的建议对您有帮助、请点击采纳、祝您生活愉快