Несколько дней назад я начал изучать фреймворк 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
Реализация функции перетаскивания изображений с помощью платформы DearPyGui вызвала у меня слишком много проблем. ⇐ Python
Программы на Python
1731242535
Anonymous
Несколько дней назад я начал изучать фреймворк [b]DearPyGui[/b], меня поразила скорость и результаты. Однако я столкнулся с проблемами, когда пытался реализовать функцию перетаскивания изображений. Использование кажется простым, поскольку методы add_image и add_image_button имеют параметры drag_callback и drop_callback, но что бы я ни пробовал, ничего не получалось.
Я искал решение в официальная документация, но безуспешно - о перетаскивании мало что написано. Я также искал готовые решения и нашел только то, что похоже на перетаскивание текста извне приложения, и это не решает мою проблему, мне нужно перетаскивать изображения между элементами в одном окне.Я использую самую последнюю версию [b]DearPyGui 1.11.1[/b] на компьютере [b]Windows[/b] с [b]Python 3.9.13[/b].
Изображения создаются, но я не могу запустить события 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()
Подробнее здесь: [url]https://stackoverflow.com/questions/79023989/implementing-image-drag-and-drop-functionality-with-dearpygui-framework-challeng[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия