You could use a grid map to be able to do a quick check.
When you select a point first check looking only a nearby cells in the grid if there's any other point that is too close, otherwise you accept the point and also add the point to the grid:
grid = {}
points = []
def addPoint(x, y):
# returns True if the point was accepted
# compute the cell of the point
ix = int(math.floor(x / dist))
iy = int(math.floor(y / dist))
# check cell and all neighbors
for nhcell in ((ix-1, iy-1), (ix, iy-1), (ix+1, iy-1),
(ix-1, iy ), (ix, iy ), (ix+1, iy ),
(ix-1, iy+1), (ix, iy+1), (ix+1, iy+1)):
if nhcell in grid:
for xx, yy in grid[nhcell]:
if (x - xx)**2 + (y - yy)**2 < dist2:
# anoter existing point is too close
return False
# the new point is fine
points.add((x, y))
# we should also add it to the grid for future checks
if (ix, iy) in grid:
grid[(ix, iy)].append((x, y))
else:
grid[(ix, iy)] = [(x, y)]
return True