class_docstr: For displaying scale-invariant arrows.
  For arrows pointing to a location on a curve, see CurveArrow
class_docstr_tok: ["For","displaying","scale-invariant","arrows",".","For","arrows","pointing","to","a","location","on","a","curve",",","see","CurveArrow"]
docstr: Changes the appearance of the arrow.
  All arguments are optional:
  
  ======================  =================================================
  **Keyword Arguments:**
  angle                   Orientation of the arrow in degrees. Default is
                          0; arrow pointing to the left.
  headLen                 Length of the arrow head, from tip to base.
                          default=20
  headWidth               Width of the arrow head at its base. If
                          headWidth is specified, it overrides tipAngle.
  tipAngle                Angle of the tip of the arrow in degrees. Smaller
                          values make a 'sharper' arrow. default=25
  baseAngle               Angle of the base of the arrow head. Default is
                          0, which means that the base of the arrow head
                          is perpendicular to the arrow tail.
  tailLen                 Length of the arrow tail, measured from the base
                          of the arrow head to the end of the tail. If
                          this value is None, no tail will be drawn.
                          default=None
  tailWidth               Width of the tail. default=3
  pen                     The pen used to draw the outline of the arrow.
  brush                   The brush used to fill the arrow.
  pxMode                  If True, then the arrow is drawn as a fixed size
                          regardless of the scale of its parents (including
                          the ViewBox zoom level). 
  ======================  =================================================
docstr_tok: ["Changes","the","appearance","of","the","arrow",".","All","arguments","are","optional",":","======================","=================================================","*","*","Keyword","Arguments",":","*","*","angle","Orientation","of","the","arrow","in","degrees",".","Default","is","0",";","arrow","pointing","to","the","left",".","headLen","Length","of","the","arrow","head",",","from","tip","to","base",".","default=20","headWidth","Width","of","the","arrow","head","at","its","base",".","If","headWidth","is","specified",",","it","overrides","tipAngle",".","tipAngle","Angle","of","the","tip","of","the","arrow","in","degrees",".","Smaller","values","make","a","'sharper","'","arrow",".","default=25","baseAngle","Angle","of","the","base","of","the","arrow","head",".","Default","is","0",",","which","means","that","the","base","of","the","arrow","head","is","perpendicular","to","the","arrow","tail",".","tailLen","Length","of","the","arrow","tail",",","measured","from","the","base","of","the","arrow","head","to","the","end","of","the","tail",".","If","this","value","is","None",",","no","tail","will","be","drawn",".","default=None","tailWidth","Width","of","the","tail",".","default=3","pen","The","pen","used","to","draw","the","outline","of","the","arrow",".","brush","The","brush","used","to","fill","the","arrow",".","pxMode","If","True",",","then","the","arrow","is","drawn","as","a","fixed","size","regardless","of","the","scale","of","its","parents","(","including","the","ViewBox","zoom","level",")",".","======================","================================================="]
code: def setStyle(self, **opts):
      """
      Changes the appearance of the arrow.
      All arguments are optional:
  
      ======================  =================================================
      **Keyword Arguments:**
      angle                   Orientation of the arrow in degrees. Default is
                              0; arrow pointing to the left.
      headLen                 Length of the arrow head, from tip to base.
                              default=20
      headWidth               Width of the arrow head at its base. If
                              headWidth is specified, it overrides tipAngle.
      tipAngle                Angle of the tip of the arrow in degrees. Smaller
                              values make a 'sharper' arrow. default=25
      baseAngle               Angle of the base of the arrow head. Default is
                              0, which means that the base of the arrow head
                              is perpendicular to the arrow tail.
      tailLen                 Length of the arrow tail, measured from the base
                              of the arrow head to the end of the tail. If
                              this value is None, no tail will be drawn.
                              default=None
      tailWidth               Width of the tail. default=3
      pen                     The pen used to draw the outline of the arrow.
      brush                   The brush used to fill the arrow.
      pxMode                  If True, then the arrow is drawn as a fixed size
                              regardless of the scale of its parents (including
                              the ViewBox zoom level).
      ======================  =================================================
      """
      arrowOpts = [
          "headLen",
          "tipAngle",
          "baseAngle",
          "tailLen",
          "tailWidth",
          "headWidth",
      ]
      allowedOpts = ["angle", "pen", "brush", "pxMode"] + arrowOpts
      needUpdate = False
      for k, v in opts.items():
          if k not in allowedOpts:
              raise KeyError('Invalid arrow style option "%s"' % k)
          if self.opts.get(k) != v:
              needUpdate = True
          self.opts[k] = v
  
      if not needUpdate:
          return
  
      opt = dict(
          [(k, self.opts[k]) for k in arrowOpts if k in self.opts]
      )
      tr = QtGui.QTransform()
      tr.rotate(self.opts["angle"])
      self.path = tr.map(fn.makeArrowPath(**opt))
  
      self.setPath(self.path)
  
      self.setPen(fn.mkPen(self.opts["pen"]))
      self.setBrush(fn.mkBrush(self.opts["brush"]))
  
      if self.opts["pxMode"]:
          self.setFlags(
              self.flags()
              | self.GraphicsItemFlag.ItemIgnoresTransformations
          )
      else:
          self.setFlags(
              self.flags()
              & ~self.GraphicsItemFlag.ItemIgnoresTransformations
          )
  
file_path: pyqtgraph/pyqtgraph/graphicsItems/ArrowItem.py
imports: from math import hypot
  from ..None import functions
  from ..Qt import QtGui, QtWidgets
label_desc: Use image node_id 2 for calling the ArrowItem obj's underlying member method code with example usage: obj.setStyle() without return types