code: def movePoint(self, i, p):
      # print("Move point", i, p)
      self.hand_rect = True  # 移动修改过
      if 0 <= i < len(self.points):
          if self.is_rect:
              p = self.mapFromScene(p)
              self.points[i] = p
              next_i = (i + 1) % 4
              if i % 2 == 0:
                  self.points[i - 1] = QtCore.QPointF(
                      p.x(), self.points[i - 1].y()
                  )
                  self.points[next_i] = QtCore.QPointF(
                      self.points[next_i].x(), p.y()
                  )
              else:
                  self.points[i - 1] = QtCore.QPointF(
                      self.points[i - 1].x(), p.y()
                  )
                  self.points[next_i] = QtCore.QPointF(
                      p.x(), self.points[next_i].y()
                  )
              self.setPolygon(QtGui.QPolygonF(self.points))
              if self.bbox:
                  self.bbox.update()
              self.moveRect()
          else:
              p = self.mapFromScene(p)
              self.points[i] = p
              self.setPolygon(QtGui.QPolygonF(self.points))
              if self.bbox:
                  self.bbox.update()
              self.moveLine(i)
  
imports: from qtpy import QtWidgets, QtGui, QtCore
  from .None import GripItem, LineItem, BBoxAnnotation
label_desc: Use image node_id 10 for calling the PolygonAnnotation obj's underlying member method code with example usage: obj.movePoint(i, p) without return types