我正在尝试设置一个ListView以便
1)选择后,该选择将从列表视图中删除
2)创建一个散点图,其中包含选定内容的标签
3)使用相同的单击,散布在屏幕上拖动
4)释放单击后,散点将被删除。在
我在tkinter做的,我正试着把这个转换成Kivy。大多数情况下,这是非常简单的,但是我遇到了几个问题。我的第一个问题是获取ListView的选择。ListView的on_touch_down
事件在ListView适配器的on_selection_change
事件之前被触发,所以如果我绑定到on_touch_down
,我会得到之前的选择,而不是当前的选择。第二个问题是拖散。目标是让用户在一次点击中,从列表视图中选择一个,在屏幕上显示一个散点并将其拖过屏幕,然后在释放单击时将其删除。我尝试在下面绑定到ListView的touch.grab()
的方法中使用touch.grab()
def onPress(self, view, touch):
if view.collide_point(touch.x, touch.y):
self.floatLayout.add_widget(self.scatter)
touch.grab(self.scatter)
但是当我点击ListView时,我得到了一个TypeError: cannot create weak reference to 'weakproxy' object
错误,尽管我的.kv文件中有keyScatter: keyScatter.__self__
,而{
这两个问题都有好的解决办法吗?在
对于任何试图从ListView进行拖放操作的人来说,有一个好消息:解决方案已经存在。为了解决这个问题,我使用了绑定到ListView适配器的}的方法,如下面的代码块中所示。在
on_selection_change
、ListView的on_touch_down
和我用于拖放的散点的{相关问题 更多 >
编程相关推荐