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






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