Реализация функции перетаскивания изображений с помощью платформы DearPyGui вызвала у меня слишком много проблем.Python

Программы на Python
Ответить
Anonymous
 Реализация функции перетаскивания изображений с помощью платформы DearPyGui вызвала у меня слишком много проблем.

Сообщение Anonymous »

Несколько дней назад я начал изучать фреймворк DearPyGui, меня поразила скорость и результаты. Однако я столкнулся с проблемами, когда пытался реализовать функцию перетаскивания изображений. Использование кажется простым, поскольку методы add_image и add_image_button имеют параметры drag_callback и drop_callback, но что бы я ни пробовал, ничего не получалось.
Я искал решение в официальная документация, но безуспешно - о перетаскивании мало что написано. Я также искал готовые решения и нашел только то, что похоже на перетаскивание текста извне приложения, и это не решает мою проблему, мне нужно перетаскивать изображения между элементами в одном окне.Я использую самую последнюю версию DearPyGui 1.11.1 на компьютере Windows с Python 3.9.13.
Изображения создаются, но я не могу запустить события drag_callback или drop_callback. Для теста я добавил параметр callback=click_callback в функцию add_image_button, и все заработало. Похоже, этот метод может работать, просто я что-то упускаю.
Ниже приведен упрощенный вариант моего подхода — он автоматически создает изображения для проверки кода:
import dearpygui.dearpygui as dpg

def get_image(width, height, red, green, blue, alpha):
"""Generates simple image"""
return [red, green, blue, alpha] * width * height

def drag_callback(sender, app_data):
print(f"Starting drag from {sender}") # Never comes here

def drop_callback(sender, app_data):
print(f"Dropped from {sender}") # Never comes here

def create_image(image_data, width, height, image_tag, texture_tag):
with dpg.texture_registry():
texture_id = dpg.add_static_texture(width, height, image_data, tag=texture_tag)

# Add the image with drag and drop functionality
dpg.add_image_button(texture_id, tag=image_tag, payload_type="image_payload", drag_callback=drag_callback,
drop_callback=drop_callback)

if __name__ == '__main__':
dpg.create_context()

print(f"DPG version {dpg.get_dearpygui_version()}") # DPG version 1.11.1

# Create a window
with dpg.window(label="Image Drag-and-Drop", tag="DragDropWindow", width=800, height=600, no_close=True,
no_collapse=True):
width = 100
height = 100
img1 = get_image(width, height, 1, 0, 1, 1)
img2 = get_image(width, height, 0, 1, 0, 1)
# Create draggable images with unique tags for both group and texture
create_image(img1, width, height, "Image1", "ImageTexture1")
create_image(img2, width, height, "Image2", "ImageTexture2")

# Setup and show viewport
dpg.create_viewport(title="Main", width=800, height=600)

dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()

# Clean up
dpg.destroy_context()


Подробнее здесь: https://stackoverflow.com/questions/790 ... k-challeng
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»