2008-08-25 4 views
5

Estoy un poco perplejo por arrastrar y soltar en wxPython (pero tal vez estas preguntas se refieren a arrastrar y soltar en otros marcos de la GUI también). Los marcos proporcionan un par de devoluciones de llamada (OnEnter y OnDragOver) que supuestamente me permiten informar al sistema si la posición actual del mouse es un lugar válido para colocar lo que sea que esté siendo arrastrado. A partir de estos métodos puedo devolver wx.DragNone, wx.DragCopy, etc. Lo que me desconcierta es que desde estos métodos no puedo llamar a GetData, lo que significa que no puedo examinar los datos que el usuario está arrastrando. Si no puedo ver los datos, ¿cómo se supone que debo saber si está bien que el usuario los deje aquí?wxpython: ¿Cómo examino los datos arrastrados en OnDragOver?

Respuesta

1

Una solución, que es un truco de utilidad limitada, es cuando se inicia un arrastre, almacena los datos arrastrados en una referencia global o estática en alguna parte. De esta forma, en los controladores OnEnter y OnDragOver, es posible obtener una referencia a los datos que se están arrastrando. Esto, por supuesto, solo es útil para drags dentro de la misma aplicación (la misma instancia de la aplicación, en realidad).

1

No hay forma de ver los datos arrastrados en los métodos OnEnter y OnDragOver.

La única solución que encontré es almacenar el elemento arrastrado en alguna variable de instancia que luego se pueda leer dentro de estos métodos.

+0

Puede ampliar un poco esto. Estaba/estoy planeando usar Wx para un proyecto divertido. Arrastrando con un retorno x/y, era algo en lo que estaba contando. –

+0

Oh, PUEDES ver dónde se insertan los datos, simplemente no puedes ver lo que se arrastra mientras se arrastra (antes de que el usuario suelte el botón del mouse), lo que a veces es útil (por ejemplo, si quieres cambiar el puntero del mouse dependiendo contenido arrastrado). – DzinX