def members(self): try: sr = self.scene().sceneRect() except AttributeError: return poly = QPolygonF(QRectF(-0.001, 0.05, 0.002, 2*max(sr.width(), sr.height()))) if abs(self.rotation())>1e-2: poly = QTransform().rotate(self.rotation()).map(poly) poly.translate(self.scenePos()) items = self.scene().items(poly) for it in items: if isinstance(it, Cell): if not poly.containsPoint(it.pos(), qt.OddEvenFill): continue yield it