我已经做了这个小函数来检查一个点是否在选择框内:
def select(x1, y1, w, h):
x, y = position
x2 = x1 + w
y2 = y1 + h
if x >= x1 and y >= y1:
if x <= x2 and y <= y2:
selected = True
else:
selected = False
但只有当w和h的值大于x1和y1时才有效。例如,如果框具有负大小,则它不起作用。如何在未事先检查if w < x1 and h < y1
的情况下检查这些案例?
答案 0 :(得分:2)
为什么不使用以下检查:
if x >= min(x1,x2) and x <= max(x1,x2):
if y >= min(y1,y2) and y <= max(y1,y2):
...
答案 1 :(得分:1)
您可以使用sorted(list)
和解构分配找到两个数字的最小值和最大值,并将它们分配给一个语句中的变量。另请注意使用min <= value <= max
链式比较:
def select(x1, y1, w, h):
x, y = position
minX, maxX = sorted([x1, x1 + w])
minY, maxY = sorted([y1, y1 + h])
if minX <= x <= maxX and minY <= y <= maxY:
selected = True
else:
selected = False