Kivy arraste e solte no ListView
Estou tentando configurar um ListView para que
1) Quando a seleção é feita, essa seleção é excluída do ListView
2) Uma Dispersão é criada segurando uma etiqueta com o texto da seleção
3) Usando o mesmo clique, o Scatter é arrastado pela tela
4) O Scatter é excluído quando o clique é liberado.
Eu fiz isso no tkinter e estou tentando fazer a transição para o Kivy. Na maioria das vezes, isso é bastante direto, mas eu encontrei alguns problemas. A primeira questão que tenho é obter a seleção do ListView. oon_touch_down
evento do ListView é acionado antes doon_selection_change
evento do adaptador do ListView, por isso, se eu ligar aon_touch_down
, Recebo o que era a seleção anterior, não a atual. A segunda questão está arrastando o Scatter. O objetivo é que o usuário, em um clique, faça uma seleção no ListView, faça com que um Scatter apareça e arraste-o pela tela e depois remova o Scatter quando o clique for liberado. Eu tentei usartouch.grab()
no método a seguir que estava vinculado ao ListViewon_touch_down
def onPress(self, view, touch):
if view.collide_point(touch.x, touch.y):
self.floatLayout.add_widget(self.scatter)
touch.grab(self.scatter)
Mas quando clico no ListView, recebo umaTypeError: cannot create weak reference to 'weakproxy' object
erro, apesar de terkeyScatter: keyScatter.__self__
no meu arquivo .kv ekeyScatter
é o ID paraself.scatter
.
Existe uma boa correção para qualquer problema?