请以PySimpleGUI版本4.60.4 写一个 pysimplegui.Image 能够上下滚动 的demo
时间: 2023-05-28 13:01:33 浏览: 116
以下是使用PySimpleGUI版本4.60.4编写的能够上下滚动的图像展示程序:
```
import PySimpleGUI as sg
# 初始图片
image_filename = 'image.png'
# 展示图片的窗口布局
layout = [[sg.Image(filename=image_filename, key='-IMAGE-')]]
# 创建窗口
window = sg.Window('可滚动的图片展示', layout, resizable=True, finalize=True)
# 图片滚动的步长
scroll_step = 20
# 创建窗口中的图像元素对象
image_element = window['-IMAGE-']
# 获取图像元素对象的大小(宽度,高度)
image_size = image_element.Size
# 获取原始图片宽度,高度
original_image_size = sg.Image(filename=image_filename).Size
# 图片当前在窗口中的位置
position = (0, 0)
# 持续循环直到窗口被关闭
while True:
# 从事件队列中获取事件和值
event, values = window.read(timeout=100)
# 如果窗口被关闭,则退出循环
if event == sg.WINDOW_CLOSED:
break
# 根据滚动方向更新图片位置
if event == 'MouseWheel:Down':
if position[1] > -original_image_size[1] + image_size[1]:
position = (position[0], position[1] - scroll_step)
elif event == 'MouseWheel:Up':
if position[1] < 0:
position = (position[0], position[1] + scroll_step)
# 更新图片位置
image_element.update(filename=image_filename, location=position)
# 关闭窗口
window.close()
```
程序使用了PySimpleGUI的图片元素(`sg.Image`)来展示图片,在窗口中监听鼠标滚轮事件(`MouseWheel:Up`和`MouseWheel:Down`),根据滚动方向更新图片在窗口中的位置,从而实现图片的上下滚动。
具体实现中,每次读取事件队列并检查鼠标滚轮事件,如果当前窗口尚未滚动到顶部或底部,则根据滚动方向更新图片位置,并更新图片元素的`location`属性以反映出更新后的位置。程序将持续运行直到窗口被关闭。
阅读全文