code: def refreshButton(self):
          collapsed   = self.isCollapsed()
          btn         = self._collapseButton
          if not btn:
              return
          btn.setMaximumSize(MAX_SIZE, MAX_SIZE)
          if self.orientation() == Qt.Vertical:
              btn.setMaximumHeight(12)
          else:
              btn.setMaximumWidth(12)
          icon = ''
          if self.orientation() == Qt.Vertical:
              if collapsed:
                  self.setFixedWidth(self._collapsedSize)
                  btn.setMaximumHeight(MAX_SIZE)
                  btn.setArrowType(Qt.RightArrow)
              else:
                  self.setMaximumWidth(MAX_SIZE)
                  self._precollapseSize = None
                  btn.setMaximumHeight(12)
                  btn.setArrowType(Qt.LeftArrow)
          else:
              if collapsed:
                  self.setFixedHeight(self._collapsedSize)
                  btn.setMaximumWidth(MAX_SIZE)
                  btn.setArrowType(Qt.DownArrow)
              else:
                  self.setMaximumHeight(1000)
                  self._precollapseSize = None
                  btn.setMaximumWidth(12)
                  btn.setArrowType(Qt.UpArrow)
          for index in range(1, self.layout().count()):
              item = self.layout().itemAt(index)
              if not item.widget():
                  continue
              if collapsed:
                  item.widget().setMaximumSize(0, 0)
              else:
                  item.widget().setMaximumSize(MAX_SIZE, MAX_SIZE)
          if not self.isCollapsable():
              btn.hide()
          else:
              btn.show()