我在Touchpoint类下的代码试图在小部件中打印图像的x,y坐标。但是,这段代码给出的是相对于窗口的坐标,而不仅仅是图像
我尝试使用collide_point方法
Query query = new Query();
query.addCriteria(criteria);
query.toString();
class TouchPoint(Image):
def on_touch_down(self, touch):
if not self.load_image.collide_point(*touch.pos):
return False
else:print(touch)
答案 0 :(得分:0)
这只是通过反复试验而创建的,因此它不一定普遍正确。但这是尝试做您想要的事情:
class TouchPoint(Image):
def on_touch_down(self, touch):
if not self.load_image.collide_point(*touch.pos):
return False
else:
# coordinates of image lower left corner inside the TouchPoint widget
im_x = (self.size[0] - self.norm_image_size[0]) / 2.0 + self.x
im_y = (self.size[1] - self.norm_image_size[1]) / 2.0 + self.y
# touch coordinates relative to image location
im_touch_x = touch.x - im_x
im_touch_y = touch.y - im_y
# check if touch is with the actual image
if im_touch_x < 0 or im_touch_x > self.norm_image_size[0]:
print('Missed')
elif im_touch_y < 0 or im_touch_y > self.norm_image_size[1]:
print('Missed')
else:
print('image touch coords:', im_touch_x, im_touch_y)
norm_image_size
是TouchPoint
中图像的实际大小。此代码假定图像将在TouchPoint
小部件中居中。没有保证,但这可能会为您提供一个起点。