docs: def create_main_frame(self):
  
  
  
          self.resize(800, 800)
  
          self.main_frame = QWidget()
          self.dpi = 128
          self.fig = Figure((8.0, 8.0), dpi=self.dpi)
  
          self.fig.subplots_adjust(hspace=0.5, wspace=0.5, left=0.13, bottom=0.2, right=0.7, top=0.9)
  
          self.canvas = FigureCanvas(self.fig)
          self.canvas.setParent(self.main_frame)
          self.axes = self.fig.add_subplot(111)
          # self.axes.hold(False)
  
          # Create the navigation toolbar, tied to the canvas
          self.mpl_toolbar = NavigationToolbar(self.canvas, self.main_frame)
  
          # Other GUI controls
  
          self.load_data_button = QPushButton('&Add Data to Compare')
          self.load_data_button.clicked.connect(self.loadDataToTest)
  
          self.save_plot_button = QPushButton('&Save IMG')
          self.save_plot_button .clicked.connect(self.saveImgFile)
  
          self.stat_button = QPushButton('&Show Stat')
          self.stat_button.clicked.connect(self.Stat)
  
  
          self.load_img_button = QPushButton('&Load Basemap')
          self.load_img_button.clicked.connect(self.Load)
  
          self.unload_img_button = QPushButton('&Unload Basemap')
          self.unload_img_button.clicked.connect(self.Unload)
  
  
          self.legend_cb = QCheckBox('&Legend')
          self.legend_cb.setChecked(True)
          self.legend_cb.stateChanged.connect(self.Magic)  # int
  
  
  
          self.show_load_data_cb = QCheckBox('&Show Loaded Data')
          self.show_load_data_cb.setChecked(True)
          self.show_load_data_cb.stateChanged.connect(self.Magic)  # int
  
  
          self.show_data_index_cb = QCheckBox('&Show Data Index')
          self.show_data_index_cb.setChecked(False)
          self.show_data_index_cb.stateChanged.connect(self.Magic)  # int
  
  
          self.hyperplane_cb= QCheckBox('&Hyperplane')
          self.hyperplane_cb.setChecked(False)
          self.hyperplane_cb.stateChanged.connect(self.Magic)  # int
  
  
          self.fit_cb= QCheckBox('&PolyFit')
          self.fit_cb.setChecked(False)
          self.fit_cb.stateChanged.connect(self.Magic)  # int
  
  
  
  
          self.fit_seter = QLineEdit(self)
          self.fit_seter.textChanged[str].connect(self.FitChanged)
  
  
  
          self.fit_slider_label = QLabel('y= f(x) EXP')
          self.fit_slider = QSlider(Qt.Vertical)
          self.fit_slider.setRange(0, 1)
          self.fit_slider.setValue(0)
          self.fit_slider.setTracking(True)
          self.fit_slider.setTickPosition(QSlider.TicksBothSides)
          self.fit_slider.valueChanged.connect(self.Magic)  # int
  
  
          self.shape_cb= QCheckBox('&Shape')
          self.shape_cb.setChecked(False)
          self.shape_cb.stateChanged.connect(self.Magic)  # int
  
          #self.shape_label = QLabel('Step')
          #self.shape_seter = QLineEdit(self)
          #self.shape_seter.textChanged[str].connect(self.ShapeChanged)
  
  
  
          self.norm_cb = QCheckBox('&Norm')
          self.norm_cb.setChecked(False)
          self.norm_cb.stateChanged.connect(self.Magic)  # int
  
          self.standard_slider = QSlider(Qt.Horizontal)
          self.standard_slider.setRange(0, len(self.StandardsName))
  
          if len(self._given_Standard) > 0:
              self.standard_slider.setValue(len(self.StandardsName))
              self.right_label = QLabel("Self Defined Standard")
  
          else:
              self.standard_slider.setValue(0)
              self.right_label = QLabel(self.StandardsName[int(self.standard_slider.value())])
  
  
          self.standard_slider.setTracking(True)
          self.standard_slider.setTickPosition(QSlider.TicksBothSides)
          self.standard_slider.valueChanged.connect(self.Magic)  # int
          self.left_label= QLabel('Standard' )
  
  
  
          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.ValueChooser)  # int
  
  
  
          self.x_seter = QLineEdit(self)
          self.x_seter.textChanged[str].connect(self.LabelSeter)
  
          #self.x_calculator = QLineEdit(self)
  
  
  
          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.ValueChooser)  # int
  
  
          self.y_seter = QLineEdit(self)
          self.y_seter.textChanged[str].connect(self.LabelSeter)
  
          #self.y_calculator = QLineEdit(self)
  
  
          self.logy_cb = QCheckBox('&Log')
          self.logy_cb.setChecked(False)
          self.logy_cb.stateChanged.connect(self.Magic)  # int
  
  
  
  
          self.hyperplane_cb= QCheckBox('&Hyperplane')
          self.hyperplane_cb.setChecked(False)
          self.hyperplane_cb.stateChanged.connect(self.Magic)  # int
  
  
          self.save_predict_button_selected = QPushButton('&Predict Selected')
          self.save_predict_button_selected.clicked.connect(self.showPredictResultSelected)
  
          self.save_predict_button = QPushButton('&Predict All')
          self.save_predict_button.clicked.connect(self.showPredictResult)
  
          self.load_data_button = QPushButton('&Add Data to Compare')
          self.load_data_button.clicked.connect(self.loadDataToTest)
  
          self.width_size_seter_label = QLabel('SVG Width')
          self.width_size_seter = QLineEdit(self)
  
          self.width_size_seter.textChanged[str].connect(self.WChanged)
  
          self.height_size_seter_label = QLabel('SVG Height')
          self.height_size_seter = QLineEdit(self)
  
          self.height_size_seter.textChanged[str].connect(self.HChanged)
  
          self.Left_size_seter_label = QLabel('PNG Left')
          self.Left_size_seter = QLineEdit(self)
  
          self.Left_size_seter.textChanged[str].connect(self.LeftChanged)
  
          self.Right_size_seter_label = QLabel('PNG Right')
          self.Right_size_seter = QLineEdit(self)
  
          self.Right_size_seter.textChanged[str].connect(self.RightChanged)
  
          self.Up_size_seter_label = QLabel('PNG Top')
          self.Up_size_seter = QLineEdit(self)
  
          self.Up_size_seter.textChanged[str].connect(self.UpChanged)
  
          self.Down_size_seter_label = QLabel('PNG Bottom')
          self.Down_size_seter = QLineEdit(self)
  
          self.Down_size_seter.textChanged[str].connect(self.DownChanged)
  
          #
          # Layout with box sizers
          #
          self.hbox = QHBoxLayout()
          self.hbox0 = QHBoxLayout()
          self.hbox1 = QHBoxLayout()
          self.hbox2 = QHBoxLayout()
          self.hbox3 = QHBoxLayout()
          self.hbox4 = QHBoxLayout()
          self.hbox5 = QHBoxLayout()
  
          w=self.width()
          h=self.height()
  
          #self.load_data_button.setFixedWidth(w/4)
  
  
          self.kernel_select = QSlider(Qt.Horizontal)
          self.kernel_select.setRange(0, len(self.kernel_list)-1)
          self.kernel_select.setValue(0)
          self.kernel_select.setTracking(True)
          self.kernel_select.setTickPosition(QSlider.TicksBothSides)
          self.kernel_select.valueChanged.connect(self.Magic)  # int
          self.kernel_select_label = QLabel('Kernel')
  
          for w in [self.save_plot_button ,self.stat_button,self.load_data_button,self.save_predict_button,self.save_predict_button_selected]:
              self.hbox.addWidget(w)
              self.hbox.setAlignment(w, Qt.AlignVCenter)
  
  
          for w in [self.legend_cb,self.show_load_data_cb,self.show_data_index_cb, self.norm_cb,self.shape_cb,self.hyperplane_cb,self.kernel_select_label,self.kernel_select]:
              self.hbox0.addWidget(w)
              self.hbox0.setAlignment(w, Qt.AlignVCenter)
  
  
          for w in [self.left_label, self.standard_slider,self.right_label,self.fit_cb,self.fit_slider,self.fit_slider_label ,self.fit_seter]:
              self.hbox1.addWidget(w)
              self.hbox1.setAlignment(w, Qt.AlignVCenter)
  
  
          for w in [self.logx_cb,self.x_seter, self.x_element]:
              self.hbox2.addWidget(w)
              self.hbox2.setAlignment(w, Qt.AlignVCenter)
  
          for w in [self.logy_cb,self.y_seter, self.y_element]:
              self.hbox3.addWidget(w)
              self.hbox3.setAlignment(w, Qt.AlignVCenter)
  
  
          for w in [self.load_img_button, self.width_size_seter_label, self.width_size_seter, self.height_size_seter_label,
                    self.height_size_seter]:
              self.hbox4.addWidget(w)
              self.hbox4.setAlignment(w, Qt.AlignLeft)
  
  
  
          for w in [self.unload_img_button,self.Left_size_seter_label, self.Left_size_seter,
                    self.Right_size_seter_label,  self.Right_size_seter,self.Down_size_seter_label, self.Down_size_seter,
                    self.Up_size_seter_label ,self.Up_size_seter]:
              self.hbox5.addWidget(w)
              self.hbox5.setAlignment(w, Qt.AlignLeft)
  
  
  
          self.vbox = QVBoxLayout()
          self.vbox.addWidget(self.mpl_toolbar)
          self.vbox.addWidget(self.canvas)
          self.vbox.addLayout(self.hbox)
          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.vbox.addLayout(self.hbox5)
  
          self.textbox = GrowingTextEdit(self)
  
          self.vbox.addWidget(self.textbox)
  
  
  
  
  
          self.main_frame.setLayout(self.vbox)
          self.setCentralWidget(self.main_frame)
  
          w=self.width()
          h=self.height()
  
          self.x_seter.setFixedWidth(w/10)
          self.y_seter.setFixedWidth(w/10)
  
          '''
          self.save_plot_button.setFixedWidth(w/10)
          self.stat_button.setFixedWidth(w/10)
          self.load_data_button.setFixedWidth(w/4)
          self.save_predict_button_selected.setFixedWidth(w/4)
          self.save_predict_button.setFixedWidth(w/4)
          '''
  
          self.standard_slider.setFixedWidth(w/5)
  
          self.right_label.setFixedWidth(w/5)
  
          self.fit_seter.setFixedWidth(w/20)
  
          self.load_img_button.setFixedWidth(w/5)
          self.unload_img_button.setFixedWidth(w/5)
  
          self.width_size_seter_label.setFixedWidth(w/10)
          self.height_size_seter_label.setFixedWidth(w/10)
  
          self.width_size_seter.setMinimumWidth(w/20)
          self.height_size_seter.setMinimumWidth(w/20)
  
          self.Right_size_seter_label.setFixedWidth(w/10)
          self.Left_size_seter_label.setFixedWidth(w/10)
          self.Up_size_seter_label.setFixedWidth(w/10)
          self.Down_size_seter_label.setFixedWidth(w/10)
  
          self.Right_size_seter.setFixedWidth(w/20)
          self.Left_size_seter.setFixedWidth(w/20)
          self.Up_size_seter.setFixedWidth(w/20)
          self.Down_size_seter.setFixedWidth(w/20)