Python 大小为负的collide_小部件
我有一些小部件,想“拖动并选择”它们。我使用一个选择小部件作为矩形来显示选择大小,然后对root中的child使用Python 大小为负的collide_小部件,python,kivy,Python,Kivy,我有一些小部件,想“拖动并选择”它们。我使用一个选择小部件作为矩形来显示选择大小,然后对root中的child使用。children:selection.collide_小部件(child)。只要我从左下到右上方向拖动,效果就很好,因为选择小部件的大小将是正的 是否期望具有负大小的小部件不能与collide_小部件一起工作 我是否应该对小部件使用负尺寸 kv文件: <SelectionBox>: size: 0,0 size_hint: None, None
。children:selection.collide_小部件(child)
。只要我从左下到右上方向拖动,效果就很好,因为选择小部件的大小将是正的
是否期望具有负大小的小部件不能与collide_小部件一起工作
我是否应该对小部件使用负尺寸
kv文件:
<SelectionBox>:
size: 0,0
size_hint: None, None
canvas:
Color:
rgba: 1, 1, 1, 0.1
Rectangle:
pos: root.pos
size: root.size
<Selectable>:
size: 32, 32
size_hint: None, None
canvas:
Color:
rgba: 0, 1, 0, 1
Rectangle:
pos: root.pos
size: root.size
事实上,这种行为是意料之中的。从
kivy.uix.widget.widget
:
def collide_widget(self, wid):
if self.right < wid.x:
return False
if self.x > wid.right:
return False
if self.top < wid.y:
return False
if self.y > wid.top:
return False
return True
这将处理大小为正或负的两个小部件(调用collide_小部件的小部件和正在测试的小部件)
然而,我不确定其他地方的代码是否依赖于负数大小,而不是预期的冲突(所以要小心地在小部件上安装monkey补丁)
def collide_widget(self, wid):
if self.right < wid.x:
return False
if self.x > wid.right:
return False
if self.top < wid.y:
return False
if self.y > wid.top:
return False
return True
def collide_widget(self, wid):
if max(self.x, self.right) < min(wid.x, wid.right):
return False
if min(self.x, self.right) > max(wid.x, wid.right):
return False
if max(self.top, self.y) < min(wid.y, wid.top):
return False
if min(self.top, self.y) > max(wid.y, wid.top):
return False
return True