Wxpython: как проверить перетаскиваемые данные в OnDragOver?

Я немного озадачен перетаскиванием в wxPython (но, возможно, этот вопрос относится и к перетаскиванию в других фреймворках графического интерфейса). Фреймворки предоставляют несколько обратных вызовов (OnEnter и OnDragOver), которые якобы позволяют мне информировать систему о том, является ли текущая позиция мыши допустимым местом для отбрасывания всего, что перетаскивается. Из этих методов я могу вернуть wx.DragNone, wx.DragCopy и т. д. Меня озадачивает то, что из этих методов мне не разрешено вызывать GetData, что означает, что мне не разрешено проверять данные, которые перетаскивает пользователь. Если я не могу видеть данные, как мне узнать, можно ли пользователю перейти сюда?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
6
0
563
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Одно из решений, которое представляет собой хак с ограниченной полезностью, заключается в том, что при инициировании перетаскивания данные перетаскиваются где-нибудь в глобальной или статической ссылке. Таким образом, в обработчиках OnEnter и OnDragOver можно получить ссылку на перетаскиваемые данные. Это, конечно, полезно только для перетаскивания внутри одного и того же приложения (фактически, одного и того же экземпляра приложения).

В методах OnEnter и OnDragOver нет возможности увидеть перетаскиваемые данные.

Единственное решение, которое я нашел, - это сохранить перетаскиваемый элемент в некоторой переменной экземпляра, которая затем будет доступна для чтения внутри этих методов.

Не могли бы вы немного подробнее рассказать об этом. Я планировал использовать Wx для веселого проекта. Я рассчитывал на перетаскивание с возвратом x / y.

J.J. 01.10.2008 17:21

О, вы МОЖЕТЕ увидеть, куда сбрасываются данные, вы просто не можете видеть, что перетаскивается при перетаскивании (до того, как пользователь отпустит кнопку мыши), что иногда полезно (например, если вы хотите изменить указатель мыши в зависимости от перетаскивания содержание).

DzinX 01.10.2008 21:22

Другие вопросы по теме