class_docstr: Transform that can always be represented as a combination of 3 matrices: scale * rotate * translate
  This transform has no shear; angles are always preserved.
class_docstr_tok: ["Transform","that","can","always","be","represented","as","a","combination","of","3","matrices",":","scale","*","rotate","*","translate","This","transform","has","no","shear",";","angles","are","always","preserved","."]
code: def __init__(self, init=None):
      QtGui.QTransform.__init__(self)
      self.reset()
  
      if init is None:
          return
      elif isinstance(init, dict):
          self.restoreState(init)
      elif isinstance(init, SRTTransform):
          self._state = {
              "pos": Point(init._state["pos"]),
              "scale": Point(init._state["scale"]),
              "angle": init._state["angle"],
          }
          self.update()
      elif isinstance(init, QtGui.QTransform):
          self.setFromQTransform(init)
      elif isinstance(init, QtGui.QMatrix4x4):
          self.setFromMatrix4x4(init)
      else:
          raise Exception(
              "Cannot create SRTTransform from input type: %s"
              % str(type(init))
          )
  
imports: from math import atan2, degrees
  import numpy
  from .Point import Point
  from .Qt import QtGui
  from .None import SRTTransform3D
label_desc: Use image node_id 1 to create a new SRTTransform object from inherited base classes: QtGui with example: obj = SRTTransform(init)