pysimplegui.Image 添加滚动条
时间: 2023-05-28 07:01:14 浏览: 134
pysimplegui.Image不支持添加滚动条,但是可以将其放置在滚动窗口内。
以下是一个示例代码,其中的图像被放置在滚动窗口内:
```python
import PySimpleGUI as sg
image_filename = 'image.png'
image = sg.Image(filename=image_filename)
layout = [
[sg.Scrollable(
[[image]],
size=(500, 500),
scroll_wheel_navigation=True
)]
]
window = sg.Window('Image Viewer', layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
window.close()
```
在上面的代码中,sg.Scrollable函数创建了一个滚动窗口,并将图像放置在其中。滚动窗口的大小可以根据需要进行调整。 scroll_wheel_navigation标志使鼠标滚轮可用于垂直滚动窗口。
请注意,以上示例仅适用于较小的图像。对于较大的图像,性能可能会受到影响。如果需要处理较大的图像,请考虑使用专业的图像查看器,如Pillow。
相关问题
请以PySimpleGUI版本4.60.4 写一个 pysimplegui.Image 带滚动条 的demo
很好,下面就是一个简单的Demo,使用PySimpleGUI版本4.60.4,用pysimplegui.Image带滚动条来显示一张大图片:
```python
import PySimpleGUI as sg
# 图片轮廓
img_fname = 'demo.png'
img_rescale = 1
# 定义窗口布局
layout = [[sg.Image(filename='', key='image',
size=(800, 600), background_color='white')],
[sg.Slider(range=(0.5, 2), orientation='h',
resolution=0.1, default_value=img_rescale,
size=(40, 15), key='slider')],
[sg.Button('退出', size=(10, 2))]]
# 创建窗口
window = sg.Window('带滚动条的图片查看器', layout, finalize=True)
# 显示图片
img = sg.Image(filename=img_fname)
window['image'].update(data=img.get_data())
while True:
event, values = window.read()
if event in (sg.WIN_CLOSED, '退出'):
break
elif event == 'slider':
img_rescale = values[event]
# 更改图片大小
img = sg.Image(filename=img_fname, size=(int(800*img_rescale), int(600*img_rescale)))
window['image'].update(data=img.get_data())
# 关闭窗口
window.close()
```
使用方法:
1. 将上述代码保存为`demo.py`文件。
2. 准备一张较大的图片,改名为`demo.png`,把它放在同一目录下。
3. 打开命令行,进入该目录,输入`python demo.py`启动程序。
4. 程序启动后,你就可以通过拖动下方的滑块来改变图片大小,看到滚动条的效果了。
效果如下图所示:
![](https://cdn.luogu.com.cn/upload/image_hosting/p7d0zivm.png)
pysimplegui.Image 返回点击图像坐标
pysimplegui.Image并不会直接返回点击图像的坐标。但可以通过以下方法实现:
1. 在窗口上放置一个隐藏的Button或者DrawingElement,覆盖在Image上方;
2. 监听Button或者DrawingElement的点击事件,并获取鼠标点击的坐标。
下面是一个简单的示例代码:
```python
import PySimpleGUI as sg
layout = [[sg.Image(filename='test.png', key='-IMAGE-')],
[sg.Button('', size=(640, 480), key='-CLICK-')]]
window = sg.Window('Image Click Demo', layout)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
if event == '-CLICK-':
x, y = values['-CLICK-']
print(f'Image Clicked at ({x}, {y})')
window.close()
```
在上面的示例中,我们在Image下方放置了一个大小与Image相同的Button,并将Button的key设置为`'-CLICK-'`。在程序运行时,我们通过监听`'-CLICK-'`事件,获取到鼠标点击的坐标,并输出到控制台。这样就实现了获取图像点击坐标的功能。注意,这里的坐标是相对于Button的坐标,需要根据实际情况进行换算。