code: def create_settings(self):
          
          bbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Apply |
                                  QDialogButtonBox.Cancel)
          self.idx_ok = bbox.button(QDialogButtonBox.Ok)
          self.idx_apply = bbox.button(QDialogButtonBox.Apply)
          self.idx_cancel = bbox.button(QDialogButtonBox.Cancel)
          bbox.clicked.connect(self.button_clicked)
  
          page_list = QListWidget()
          page_list.setSpacing(1)
          page_list.currentRowChanged.connect(self.change_widget)
  
          pages = ['General', 'Overview', 'Signals', 'Channels', 'Spectrum',
                   'Notes', 'Video']
          for one_page in pages:
              page_list.addItem(one_page)
  
          self.stacked = QStackedWidget()
          self.stacked.addWidget(self.config)
          self.stacked.addWidget(self.parent.overview.config)
          self.stacked.addWidget(self.parent.traces.config)
          self.stacked.addWidget(self.parent.channels.config)
          self.stacked.addWidget(self.parent.spectrum.config)
          self.stacked.addWidget(self.parent.notes.config)
          self.stacked.addWidget(self.parent.video.config)
  
          hsplitter = QSplitter()
          hsplitter.addWidget(page_list)
          hsplitter.addWidget(self.stacked)
  
          btnlayout = QHBoxLayout()
          btnlayout.addStretch(1)
          btnlayout.addWidget(bbox)
  
          vlayout = QVBoxLayout()
          vlayout.addWidget(hsplitter)
          vlayout.addLayout(btnlayout)
  
          self.setLayout(vlayout)
docs: Create the widget, organized in two parts.
  
          Notes
          -----
          When you add widgets in config, remember to update show_settings too