docs: def create_main_frame(self):
          self.main_frame = QWidget()
  
          #self.main_frame.setFixedSize(self.width(), self.width())
  
          self.dpi = 128
          self.ShapeGroups =200
          self.view = gl.GLViewWidget()
  
          #self.view = pg.PlotWidget()
  
          #self.view.setFixedSize(self.width(),self.height())
  
          self.view.setFixedSize(self.width(), self.width())
  
          self.view.setParent(self.main_frame)
  
  
          # Other GUI controls
          self.save_button = QPushButton('&Save')
          self.save_button.clicked.connect(self.saveImgFile)
  
          self.draw_button = QPushButton('&Reset')
          self.draw_button.clicked.connect(self.Reset)
  
          self.load_button = QPushButton('&Load')
          #self.load_button.clicked.connect(self.Load)
  
  
          self.fit_cb= QCheckBox('&PolyFit')
          self.fit_cb.setChecked(False)
          self.fit_cb.stateChanged.connect(self.Magic)  # int
  
          self.fit_label = QLabel('Exp')
          self.fit_seter = QLineEdit(self)
          self.fit_seter.textChanged[str].connect(self.FitChanged)
  
  
          self.shape_cb= QCheckBox('&Shape')
          self.shape_cb.setChecked(False)
          self.shape_cb.stateChanged.connect(self.Magic)  # int
  
  
          self.Normalize_cb = QCheckBox('&Normalize')
          self.Normalize_cb.setChecked(False)
          self.Normalize_cb.stateChanged.connect(self.Magic)  # int
  
          self.norm_slider_label = QLabel('Standard:' + self.NameChosen)
          self.norm_slider = QSlider(Qt.Horizontal)
          self.norm_slider.setRange(0, 4)
          self.norm_slider.setValue(0)
          self.norm_slider.setTracking(True)
          self.norm_slider.setTickPosition(QSlider.TicksBothSides)
          self.norm_slider.valueChanged.connect(self.Magic)  # int
  
          self.x_element = QSlider(Qt.Horizontal)
          self.x_element.setRange(0, len(self.items) - 1)
          self.x_element.setValue(0)
          self.x_element.setTracking(True)
          self.x_element.setTickPosition(QSlider.TicksBothSides)
          self.x_element.valueChanged.connect(self.Magic)  # int
  
          self.x_element_label = QLabel('X')
  
          self.logx_cb = QCheckBox('&Log')
          self.logx_cb.setChecked(False)
          self.logx_cb.stateChanged.connect(self.Magic)  # int
  
          self.y_element = QSlider(Qt.Horizontal)
          self.y_element.setRange(0, len(self.items) - 1)
          self.y_element.setValue(1)
          self.y_element.setTracking(True)
          self.y_element.setTickPosition(QSlider.TicksBothSides)
          self.y_element.valueChanged.connect(self.Magic)  # int
  
          self.y_element_label = QLabel('Y')
  
          self.logy_cb = QCheckBox('&Log')
          self.logy_cb.setChecked(False)
          self.logy_cb.stateChanged.connect(self.Magic)  # int
  
          self.z_element = QSlider(Qt.Horizontal)
          self.z_element.setRange(0, len(self.items) - 1)
          self.z_element.setValue(2)
          self.z_element.setTracking(True)
          self.z_element.setTickPosition(QSlider.TicksBothSides)
          self.z_element.valueChanged.connect(self.Magic)  # int
  
          self.z_element_label = QLabel('Z')
  
          self.logz_cb = QCheckBox('&Log')
          self.logz_cb.setChecked(False)
          self.logz_cb.stateChanged.connect(self.Magic)  # int
  
  
  
  
          self.xlim_seter_left_label = QLabel('Xleft')
          self.xlim_seter_left = QLineEdit(self)
          self.xlim_seter_left.textChanged[str].connect(self.XleftChanged)
  
          self.xlim_seter_right_label = QLabel('Xright')
          self.xlim_seter_right = QLineEdit(self)
          self.xlim_seter_right.textChanged[str].connect(self.XrightChanged)
  
  
          self.ylim_seter_down_label = QLabel('Ydown')
          self.ylim_seter_down = QLineEdit(self)
          self.ylim_seter_down.textChanged[str].connect(self.YdownChanged)
  
  
          self.ylim_seter_up_label = QLabel('Yup')
          self.ylim_seter_up = QLineEdit(self)
          self.ylim_seter_up.textChanged[str].connect(self.YupChanged)
  
  
  
          self.hbox0 = QHBoxLayout()
          self.hbox1 = QHBoxLayout()
          self.hbox2 = QHBoxLayout()
          self.hbox3 = QHBoxLayout()
          self.hbox4 = QHBoxLayout()
          self.hbox5 = QHBoxLayout()
          self.hbox6 = QHBoxLayout()
          self.hbox7 = QHBoxLayout()
  
  
  
          '''
          for w in [self.fit_cb,self.fit_label, self.fit_seter,self.xlim_seter_left_label,self.xlim_seter_left,self.xlim_seter_right_label,self.xlim_seter_right,self.ylim_seter_down_label,self.ylim_seter_down,self.ylim_seter_up_label,self.ylim_seter_up,self.shape_cb]:
              self.hbox0.addWidget(w)
              self.hbox0.setAlignment(w, Qt.AlignVCenter)
          '''
  
          for w in [self.view]:
              self.hbox0.addWidget(w)
              self.hbox0.setAlignment(w, Qt.AlignVCenter)
  
  
          for w in [self.Normalize_cb, self.norm_slider_label, self.norm_slider]:
              self.hbox1.addWidget(w)
              self.hbox1.setAlignment(w, Qt.AlignVCenter)
  
          for w in [self.logx_cb, self.x_element_label, self.x_element]:
              self.hbox2.addWidget(w)
              self.hbox2.setAlignment(w, Qt.AlignVCenter)
  
          for w in [self.logy_cb, self.y_element_label, self.y_element]:
              self.hbox3.addWidget(w)
              self.hbox3.setAlignment(w, Qt.AlignVCenter)
  
          for w in [self.logz_cb, self.z_element_label, self.z_element]:
              self.hbox4.addWidget(w)
              self.hbox4.setAlignment(w, Qt.AlignVCenter)
  
  
  
          self.vbox = QVBoxLayout()
          #self.vbox.addWidget(self.view)
          self.vbox.addLayout(self.hbox0)
          self.vbox.addLayout(self.hbox1)
          self.vbox.addLayout(self.hbox2)
          self.vbox.addLayout(self.hbox3)
          self.vbox.addLayout(self.hbox4)
  
          self.main_frame.setLayout(self.vbox)
          self.setCentralWidget(self.main_frame)