【发布时间】:2014-05-25 21:11:08
【问题描述】:
我正在尝试设置一个 ListView 以便
1) 进行选择时,从 ListView 中删除该选择
2) 创建一个 Scatter,其中包含一个带有所选文本的标签
3) 使用相同的点击,Scatter 被拖过屏幕
4) 一旦点击被释放,Scatter 就会被删除。
我在 tkinter 中做了这个,我正在尝试将它转换到 Kivy。在大多数情况下,这非常简单,但我遇到了几个问题。我遇到的第一个问题是选择 ListView。 ListView 的on_touch_down 事件在ListView 适配器的on_selection_change 事件之前被触发,所以如果我绑定到on_touch_down,我会得到之前的选择,而不是当前的选择。第二个问题是拖动 Scatter。目标是让用户在 1 次单击中从 ListView 中进行选择,出现 Scatter 并将其拖过屏幕,然后在释放单击时删除 Scatter。我尝试在绑定到 ListView 的on_touch_down 的以下方法中使用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__,并且 keyScatter 是 self.scatter 的 id。
这两个问题有什么好的解决办法吗?
【问题讨论】: