def build_ui(self): min_width = 150 max_width = 200 layout = QGridLayout() self.setLayout(layout) #### # # Build up the sim settings tab # # Choose Sim: | ComboBox | # Choose shock finder: | ComboBox | # #### layout.addWidget(QLabel('Choose sim'), 0, 0) self.sim_combo = QComboBox(self) self.update_sim_list() self.sim_combo.currentIndexChanged.connect(self.sim_selection_changed) layout.addWidget(self.sim_combo, 0, 1) layout.addWidget(QLabel('Choose Shock Finder'), 1, 0) self.shock_combo = QComboBox(self) self.update_shock_opts() self.shock_combo.currentIndexChanged.connect(self.shock_finder_changed) layout.addWidget(self.shock_combo, 1, 1) #### # # prtl stride: # | QLineEdit | | x | average 1D | # #### sim_ind = self.sim_selected.sim_num sim_params = self.main_params['sim_params'][sim_ind] layout.addWidget(QLabel('Prtl Stride'), 2, 0) self.prtl_stride_edit = QLineEdit(self) self.prtl_stride_edit.setText(str(sim_params['PrtlStride'])) self.prtl_stride_edit.setMaximumWidth(max_width) self.prtl_stride_edit.setMinimumWidth(min_width) self.prtl_stride_edit.returnPressed.connect(self.stride_changed) layout.addWidget(self.prtl_stride_edit, 2, 1) self.average1D_cb = QCheckBox("Average1D") self.average1D_cb.setChecked(sim_params['Average1D']) self.average1D_cb.stateChanged.connect(self.avg_changed) layout.addWidget(self.average1D_cb, 3, 0) # radio buttons to choose plane. row = QHBoxLayout() row.addWidget(QLabel('Choose 2D-plane:')) self.slice_radio_btns = [] radiobutton = QRadioButton("x-y") radiobutton.plane = 0 radiobutton.toggled.connect(self.radio_clicked) self.slice_radio_btns.append(radiobutton) row.addWidget(radiobutton) radiobutton = QRadioButton("x-z") radiobutton.plane = 1 radiobutton.toggled.connect(self.radio_clicked) self.slice_radio_btns.append(radiobutton) row.addWidget(radiobutton) radiobutton = QRadioButton("y-z") radiobutton.plane = 2 radiobutton.toggled.connect(self.radio_clicked) self.slice_radio_btns.append(radiobutton) row.addWidget(radiobutton) layout.addLayout(row, 4, 0, 1, 2) # Now do the sliders self.sliders_dict = {} for i, ax in enumerate(['x', 'y', 'z']): row = QHBoxLayout() sld_obj = {} sld_obj['label'] = QLabel(self) sld_obj['sld'] = QSlider(Qt.Horizontal, self) sld_obj['sld'].ax = ax # update the text box whenever sld is change sld_obj['sld'].valueChanged.connect(self.scale_handler) # only update the plot when the user releases the mouse sld_obj['sld'].mouseReleaseEvent = partial(self.update_slice_val, ax) # self.sld.setRange(self.param.minimum, self.param.maximum) sld_obj['sld'].setFocusPolicy(Qt.NoFocus) sld_obj['sld'].setPageStep(1) row.addWidget(QLabel(f'{ax}-slice')) row.addWidget(sld_obj['sld']) row.addWidget(sld_obj['label']) self.sliders_dict[ax] = sld_obj layout.addLayout(row, 5 + i, 0, 1, 2) self.update_slice_widgets()