PySimpleGUI窗口显示图片
时间: 2023-08-27 20:07:16 浏览: 263
PySimpleGUI提供了一个`Image`元素,可以用来显示图片。下面是一个简单的例子:
```python
import PySimpleGUI as sg
# 读取图片
image = 'example.png'
with open(image, 'rb') as f:
img_bytes = f.read()
# 定义窗口布局
layout = [[sg.Image(data=img_bytes)]]
# 创建窗口
window = sg.Window('显示图片', layout)
# 事件循环
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
# 关闭窗口
window.close()
```
在上面的例子中,我们首先读取了一张图片,并将其转换为字节流。然后定义了一个包含一个`Image`元素的窗口布局。最后创建窗口并进入事件循环,等待用户关闭窗口。在事件循环中我们没有做任何事情,只是等待窗口关闭事件发生。最后关闭窗口。
相关问题
用PySimpleGUI先显示图片的窗口在显示主程序窗口
在使用PySimpleGUI(PSG)创建GUI应用时,通常会分为两个步骤:首先展示图片窗口,然后展示主程序窗口。以下是简单的步骤:
1. 导入所需的模块:
```python
import PySimpleGUI as sg
```
2. 加载图片并显示预览窗口:
```python
image_path = 'your_image_file.jpg' # 替换为你的图片路径
layout_image = [
[sg.Image(filename=image_path)],
]
window_image = sg.Window('Image Preview', layout_image)
while True:
event, _ = window_image.read()
if event == sg.WINDOW_CLOSED or event == 'Exit':
break
window_image.close()
```
在这个部分,我们创建了一个只包含图片的简单窗口,并在一个无限循环中等待用户关闭它。
3. 显示主程序窗口:
```python
# 现在你可以添加主程序的布局和功能
layout_main = [
# 主程序的布局结构...
]
window_main = sg.Window('Main Program', layout_main)
# 当图片窗口关闭后,显示主窗口
window_image.close()
event, _ = window_main.read()
# 关闭主窗口
window_main.close()
```
当用户关闭图片预览窗口后,程序将切换到主程序窗口。
PySimpleGUI 列表显示图片
### 创建可显示图片的列表
为了在 PySimpleGUI 中创建一个能够显示图片的列表,可以通过 `sg.Listbox` 和 `sg.Image` 组合来实现。下面是一个详细的例子说明如何完成这一功能。
首先设置主题并定义布局,在这个布局里不仅有用于展示图片路径或名称的 `Listbox` 还有一个用来实际渲染所选图片的 `Image` 元素[^1]:
```python
import PySimpleGUI as sg
# 设置应用的主题颜色方案
sg.theme('DarkAmber')
# 初始化图像文件名列表以及默认显示的第一张图
image_files = ['path/to/image1.png', 'path/to/image2.jpg']
default_image = image_files[0]
layout = [
[sg.Text('Select an Image')],
[sg.Listbox(values=image_files, size=(50, 6), key='-FILE LIST-', enable_events=True)],
[sg.Image(filename=default_image, key='-IMAGE-')]
]
```
接着创建窗口对象并将上述布局传递给它。通过监听 `-FILE LIST-` 的变化事件更新右侧 `Image` 显示的内容[^3]:
```python
window = sg.Window('Image Viewer', layout)
while True:
event, values = window.read()
if event in (None, 'Cancel'):
break
elif event == '-FILE LIST-' and len(values['-FILE LIST-'][0]
window['-IMAGE-'].update(filename=selected_file)
window.close()
```
这段代码实现了当用户从左侧列表框中选择不同的项时,右边会相应地加载并显示出对应的图片[^4]。
阅读全文