使用dear pygui 写一个bmp图片展示窗(允许滚动条上下滚动查看大图片),另该点击展示窗中的图片,返回点击的坐标
时间: 2023-05-28 17:02:19 浏览: 192
以下是使用Dear PyGui写的BMP图片展示窗,允许用户通过滚动条上下滚动查看大图片,并且可以点击图片以获取所点击的坐标。我们使用了Pillow库来读取并处理BMP图像。
```python
import dearpygui.dearpygui as dpg
from PIL import Image
# 常量定义
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600
IMAGE_WIDTH = 640
IMAGE_HEIGHT = 480
# 获取图像大小和数据
image = Image.open("test.bmp")
image_width, image_height = image.size
image_data = image.tobytes()
# 创建主窗口和子窗口
with dpg.window(label="BMP图片展示窗", width=WINDOW_WIDTH, height=WINDOW_HEIGHT):
with dpg.show(style=dpg.mvStyleVar_AntiAliased, width=IMAGE_WIDTH, height=IMAGE_HEIGHT):
# 显示图像
dpg.add_image("image", value=image_data, width=IMAGE_WIDTH, height=IMAGE_HEIGHT)
# 定义滚动条回调函数
def on_scrollbar_changed(sender, app_data, user_data):
offset_y = dpg.get_value(sender)
dpg.set_value("image", image_data[offset_y * IMAGE_WIDTH * 3:])
# 创建滚动条
dpg.add_slider_int(label="滚动条", max_value=image_height - IMAGE_HEIGHT, width=20, callback=on_scrollbar_changed)
# 定义图像回调函数
def on_image_clicked(sender, app_data, user_data):
cursor_pos = dpg.get_mouse_pos()
img_pos = dpg.get_item_pos("image")
click_pos = (cursor_pos[0] - img_pos[0], cursor_pos[1] - img_pos[1])
print("点击坐标:", click_pos)
# 注册图像回调函数
dpg.set_item_callback("image", on_image_clicked)
# 启动Dear PyGui主循环
dpg.start_dearpygui()
```
运行该程序,可以看到一个BMP图片展示窗。用户可以通过滚动条上下滚动查看大图片,也可以在图片上点击以获取所点击的坐标。
![bmppreviewer](https://user-images.githubusercontent.com/20173644/126646582-8a1e077a-df50-4ea0-b7fd-29d03c4e4fe9.png)
阅读全文