def gui(self): s=g.settings['annotator'] self.gui_reset() #windows self.window_button = WindowSelector() #buttons self.addIndex_button = QPushButton('Add Index') self.addIndex_button.pressed.connect(self.addIndex) #boxes self.fontSize_slider = pg.SpinBox(int=True, step=1) self.fontSize_slider.setValue(s['fontSize']) self.fontColour_combobox = pg.ComboBox() self.fontColours = {'white': 1, 'black': 2} self.fontColour_combobox.setItems(self.fontColours) self.textPosition_combobox = pg.ComboBox() self.textPosition = {'ms': 1, 'ma': 2, 'ls': 3, 'mb': 4, 'mt': 5, 'mm': 6, 'md': 7, 'rs': 8} self.textPosition_combobox.setItems(self.textPosition) #self.exportFolder = FolderSelector('*.txt') self.items.append({'name': 'window', 'string': 'Select Window', 'object': self.window_button}) self.items.append({'name': 'fontSize', 'string': 'Font Size', 'object': self.fontSize_slider}) self.items.append({'name': 'fontColour', 'string': 'Font Colour', 'object': self.fontColour_combobox}) self.items.append({'name': 'textPosition', 'string': 'Anchor Position', 'object': self.textPosition_combobox}) self.items.append({'name': 'addIndex', 'string': 'Add Numbers to Image Stack ', 'object': self.addIndex_button}) super().gui()
def snippet_menu(self): layout = QtWidgets.QVBoxLayout() snippet_options = pg.ComboBox() snippet_options.setItems(snippets) layout.addWidget(snippet_options) editor = Scintilla_Code_Editor() lexer = Monokai_Python_Lexer(editor) editor.setLexer(lexer) update_text = lambda *args: editor.setText( build_full_snippet(snippet_options.currentText())) update_text() snippet_options.currentIndexChanged.connect(update_text) layout.addWidget(editor) copy_btn = QtWidgets.QPushButton("Add to code") # def copy_to_cliboard(): # clipboard = QtWidgets.QApplication.instance().clipboard() # clipboard.setText(snippet_options.value()) # copy_btn.clicked.connect(copy_to_cliboard) mod_code = lambda: self.code_editor.widget.setText( modify_code(self.code_editor.widget.text(), snippet_options.currentText())) copy_btn.clicked.connect(mod_code) layout.addWidget(copy_btn) w = QtWidgets.QWidget() w.setLayout(layout) return w
def __init__(self, data_buffer_length): super(GraphViewer, self).__init__() self.buffer_samples = data_buffer_length # Define the number of graphs in the grid: graphs_vertical = 2 graphs_horizontal = 2 # Appearance settings: self.pen_style = pg.mkPen(color="y", width=2, style=QtCore.Qt.SolidLine) self.title_color = "w" self.title_size = "13pt" self.axis_color = "w" self.axis_label_style = {'color': '#FFF', 'font-size': '11pt'} self.x_grid = False self.y_grid = False # Labels and measurement units for display self.C_label = "\u00B0C" self.F_label = "\u00B0F" self.SDS_unit = "\u00B5g/m\u00B3" self.PPD_unit = "ppL" self.names_units = OrderedDict([('Temperature', self.C_label), ('Pressure', 'Pa'),('Humidity', '%'),('Gas sensor resistance', "\u03A9"), ('Air Quality Index', ''),('Estimated CO\u2082', 'ppm'),('Equivalent breath VOC', 'ppm'), ('Air quality accuracy', ''),('Illuminance', 'lux'),('White light level', ''), ('Sound pressure level', 'dBA'),('Band 1 SPL', 'dB'),('Band 2 SPL', 'dB'), ('Band 3 SPL', 'dB'),('Band 4 SPL', 'dB'),('Band 5 SPL', 'dB'), ('Band 6 SPL', 'dB'),('Peak sound amplitude', 'mPa'),('Microphone initialized', ''), ('Particle sensor duty cycle', '%'),('Particle concentration', self.PPD_unit), ('Particle data valid', '')]) self.decimal_places = [1,0,1,0,1,1,2,0,2,0,1,1,1,1,1,1,1,2,0,2,2,0] self.sound_band_number = 6 # Construct the user interface self.setWindowTitle('Waiting for data...') self.widget = QtGui.QWidget() self.setCentralWidget(self.widget) self.widget.setLayout(QtGui.QGridLayout()) self.graph_var_numbers = [] self.selected_var_numbers = [] self.plot_items = [] self.plot_handles = [] self.combos = [] self.is_bar_chart = [] for nv in range(0,graphs_vertical): for nh in range(0,graphs_horizontal): GLW = pg.GraphicsLayoutWidget() combo = pg.ComboBox() self.combos.append(combo) self.widget.layout().addWidget(combo, (2*nv), nh) self.widget.layout().addWidget(GLW, (2*nv)+1, nh) new_plot = GLW.addPlot() self.plot_items.append(new_plot) self.plot_handles.append(new_plot.plot(pen=self.pen_style, symbol=None, axisItems={'bottom': pg.DateAxisItem()})) self.formatPlotItem(new_plot) self.is_bar_chart.append(False) self.time_data = deque(maxlen=self.buffer_samples)
def test_combobox(): cb = pg.ComboBox() items = {'a': 1, 'b': 2, 'c': 3} cb.setItems(items) cb.setValue(2) assert str(cb.currentText()) == 'b' assert cb.value() == 2 # Clear item list; value should be None cb.clear() assert cb.value() == None # Reset item list; value should be set automatically cb.setItems(items) assert cb.value() == 2 # Clear item list; repopulate with same names and new values items = {'a': 4, 'b': 5, 'c': 6} cb.clear() cb.setItems(items) assert cb.value() == 5 # Set list instead of dict cb.setItems(list(items.keys())) assert str(cb.currentText()) == 'b' cb.setValue('c') assert cb.value() == str(cb.currentText()) assert cb.value() == 'c' cb.setItemValue('c', 7) assert cb.value() == 7
def init_gui(self): self.win = pg.GraphicsWindow(title="Memory trace graph plugin") self.mem_combo_box = pg.ComboBox() self.mem_combo_box.setItems(["All", "Reads", "Writes"]) self.mem_combo_box.currentIndexChanged.connect(self.mem_combo_box_changed) self.proxy = QGraphicsProxyWidget() self.proxy.setWidget(self.mem_combo_box) self.layout = self.win.addLayout(row=0, col=0) self.layout.addItem(self.proxy) self.plot_item = self.win.addPlot(title="Memory trace graph", row=1, col=0) self.plot_item.setLabel("left", "Memory address index") self.plot_item.setLabel("bottom", "Trace row id") self.scatter_plot_reads = pg.ScatterPlotItem(symbol="o") self.scatter_plot_reads.setBrush(None) self.scatter_plot_reads.setPen("g") self.scatter_plot_reads.sigClicked.connect(self.sig_clicked) self.scatter_plot_writes = pg.ScatterPlotItem(symbol="o") self.scatter_plot_writes.setBrush("r") self.scatter_plot_writes.setPen("r") self.scatter_plot_writes.sigClicked.connect(self.sig_clicked) self.plot_item.addItem(self.scatter_plot_writes) self.plot_item.addItem(self.scatter_plot_reads) self.plot_item.showGrid(y=True, x=True, alpha=1.0)
def __init__(self, serial): pg.LayoutWidget.__init__(self) self.setWindowTitle('DistanceV2 Plotting') self.resize(900, 900) self.serial = serial self.serial_a = pg.ComboBox(self) self.addWidget(self.serial_a, row=0, col=0) self.serial_b = pg.ComboBox(self) self.addWidget(self.serial_b, row=0, col=1) self.add_button = QtGui.QPushButton('Add') self.add_button.clicked.connect(self.add_plot) self.addWidget(self.add_button, row=0, col=2) self.twr_graph = pg.PlotWidget(name='TWR', title='Distance (m) vs Time (s)') self.legend = self.twr_graph.addLegend() self.twr_graph.showGrid(x=True, y=True) self.addWidget(self.twr_graph, row=1, col=0, colspan=3) self.twr_plot_line = dict() self.twr_ordered_data = dict() self.quality_graph = pg.PlotWidget(title='Quality vs Time (s)') self.quality_graph.showGrid(x=True, y=True) self.quality_graph.setXLink('TWR') self.quality_graph.setYRange(0, 1) self.addWidget(self.quality_graph, row=2, col=0, colspan=3) self.quality_plot_line = dict() self.quality_ordered_data = dict() self.colors = ['r', 'g', 'b', 'c', 'm', 'y', 'w'] self.color_offset = 0 self.show() self.available_nodes = [] self.twr_pairs = np.empty((0,2)) self.dist_prev_count = UwbNetwork.nodes[self.serial].cdp_pkts_count[self.type] self.timer = self.startTimer(QPLOT_FREQUENCY)
def __init__(self, **kwd): super(AIWindow, self).__init__(**kwd) self.main_layout = main_layout = QtGui.QHBoxLayout() self.setLayout(main_layout) btn_layout = QtGui.QVBoxLayout() main_layout.addLayout(btn_layout) start_stop_save_layout = QtGui.QHBoxLayout() btn_layout.addLayout(start_stop_save_layout) self.start_stop_buttons = PlotterStartStopPauseSave( layout=start_stop_save_layout, parent=self) self.sample_rate = pg.SpinBox(value=1000, step=1, dec=True, int=True, siPrefix=True, bounds=[1, 100000], suffix='S/s') tmp = pg.LayoutWidget() tmp.addWidget(pg.QtGui.QLabel('Sample rate'), col=0) tmp.addWidget(self.sample_rate, col=1) btn_layout.addWidget(tmp) self.duration = pg.SpinBox(value=10, dec=True, step=1, bounds=[1, 10000], suffix=' s') tmp = pg.LayoutWidget() tmp.addWidget(pg.QtGui.QLabel('Acquisition duration'), col=0) tmp.addWidget(self.duration, col=1) btn_layout.addWidget(tmp) ai = AIConnection(with_enable_button=False) btn_layout.addWidget(ai.make_layout()) self.ai = ai self.channels = [] self.channel_items = ["off", "0", "1", "2", "3"] for i in range(4): chan = pg.ComboBox( items=self.channel_items, default=self.channel_items[1] if i == 0 else None) self.channels.append(chan) btn_layout.addWidget(chan) btn_layout.addStretch(1) self.add_plot_widgets() if self.parent(): self.start_stop_buttons.connect(self.parent().new_tab_state)
def __init__(self, sem_id, config, parent=None): super(ImageEditor, self).__init__(parent=parent) self.img = None self.sem_id = sem_id self.modifications = [] self.config = config self.mod_dict = { 'Filter Pattern': FilterPattern, 'Draw Scale': DrawScale, 'Crop': Crop, 'Remove Scale': RemoveScale } self.wComboBox = pg.ComboBox() for item in sorted(list(self.mod_dict)): self.wComboBox.addItem(item) self.wAddMod = QtGui.QPushButton('Add') self.wAddMod.clicked.connect(lambda: self.addMod(mod=None)) self.wRemoveMod = QtGui.QPushButton('Remove') self.wRemoveMod.clicked.connect(self.removeMod) self.wReview = QtGui.QPushButton('Review') self.wReview.clicked.connect(self.review) self.wModList = QtGui.QListWidget() self.wModList.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) self.wModList.currentRowChanged.connect(self.selectMod) self.wDetail = QtGui.QStackedWidget() self.imgItem = pg.ImageItem() self.imgBox = pg.GraphicsLayoutWidget() self.imgBox_VB = self.imgBox.addViewBox(row=1, col=1) self.imgBox_VB.addItem(self.imgItem) self.imgBox_VB.setAspectLocked(True) self.contentWidget = QtGui.QWidget() self.layout = QtGui.QGridLayout(self.contentWidget) self.layout.setAlignment(QtCore.Qt.AlignTop) self.setWidgetResizable(True) self.setWidget(self.contentWidget) self.layout.addWidget(self.wAddMod, 0, 0, 1, 1) self.layout.addWidget(self.wModList, 1, 0, 1, 1) self.layout.addWidget(self.wRemoveMod, 2, 0, 1, 1) self.layout.addWidget(self.wComboBox, 3, 0, 1, 1) self.layout.addWidget(self.wReview, 4, 0, 1, 1) self.layout.addWidget(self.imgBox, 0, 1, 4, 1) self.layout.addWidget(self.wDetail, 0, 2, 4, 1)
def __init__(self): pg.LayoutWidget.__init__(self) self.setWindowTitle('CUWB Monitor - Specific Distances Plotting') self.resize(900, 500) self.serial_a = pg.ComboBox(self) self.addWidget(self.serial_a, row=0, col=0) self.serial_b = pg.ComboBox(self) self.addWidget(self.serial_b, row=0, col=1) self.add_button = QtGui.QPushButton('Add') self.add_button.clicked.connect(self.add_plot) self.addWidget(self.add_button, row=0, col=2) self.distance_graph = pg.PlotWidget(title='Distance (m) vs Time (s)') self.legend = self.distance_graph.addLegend() self.distance_graph.showGrid(x=True, y=True) self.addWidget(self.distance_graph, row=1, col=0, colspan=3) self.available_devices = [] self.device_pairs = [] self.distance_data = dict() self.timestamp_data = dict() self.distance_plots = dict() self.colors = [ 'r', 'g', 'b', 'c', 'm', 'y', 's', (0, 51, 0), (127, 0, 255), (255, 127, 0), (0, 255, 127), (102, 0, 0), 'w', 'l' ] self.color_offset = 0 self.show() self.network_serials = dict() self.timer = self.startTimer(QPLOT_FREQUENCY)
def __init__(self, values, parent=None): self.values = values self.value_display = pg.ComboBox() if isinstance(self.values, OrderedDict): for key, value in self.values.items(): self.value_display.addItem(str(key), str(value)) elif isinstance(self.values, dict): for key, value in sorted(self.values.items()): self.value_display.addItem(str(key), str(value)) elif isinstance(self.values, set): for value in sorted(self.values): self.value_display.addItem(str(value), str(value)) elif isinstance(self.values, Iterable): for value in self.values: self.value_display.addItem(str(value), str(value)) else: raise TypeError('invalid type encountered while populating values') super().__init__(parent=parent) return
def _horizontal_controls_create(self): self._cmb_t_div = pg.ComboBox( items=ScopeGui._t_div_items, default=list(ScopeGui._t_div_items.values())[-1], ) self._cmb_t_div.currentIndexChanged.connect(self._control_changed) self._rb_xy_ty = QtGui.QRadioButton("t-Y") self._rb_xy_a0a1 = QtGui.QRadioButton("X-Y (X=A0, Y=A1)") self._rb_xy_a0a10 = QtGui.QRadioButton("X-Y (X=A0, Y=A1-A0)") self._rb_xy_ty.setChecked(True) self._rb_xy_ty.toggled.connect(self._control_changed) self._rb_xy_a0a1.toggled.connect(self._control_changed) self._rb_xy_a0a10.toggled.connect(self._control_changed) layout = QtGui.QVBoxLayout() layout.addWidget(self._cmb_t_div) layout.addWidget(self._rb_xy_ty) layout.addWidget(self._rb_xy_a0a1) layout.addWidget(self._rb_xy_a0a10) return layout
def __init__(self, units=None, parent=None, default=None): super().__init__(parent=parent) if units is None: units = 'dimensionless' self.units = units self.params_layout = QtWidgets.QStackedLayout() self.generate_range_widgets(units=units) self.range_func_combo = pg.ComboBox( items=list(self.range_widgets.keys())) self.range_func_combo.currentIndexChanged[str].connect(self.set_widget) layout = QtWidgets.QFormLayout() layout.addRow('Function', self.range_func_combo) select = QtWidgets.QWidget() select.setLayout(layout) params = QtWidgets.QWidget() params.setLayout(self.params_layout) layout = QtWidgets.QVBoxLayout() layout.addWidget(select) layout.addWidget(params) self.setLayout(layout) if not default is None: self.set(default)
def setupUI(self): customLayout = QtWidgets.QVBoxLayout(self) customLayout.addWidget(QtWidgets.QLabel( 'type: {}, name: {}'.format(self.type, self.name))) buttons = QtWidgets.QWidget() buttonly = QtWidgets.QHBoxLayout(buttons) self.initButton = QtWidgets.QPushButton('interface') self.initButton.setToolTip('launch interactive interface') self.initButton.clicked.connect(lambda: self.customInit()) buttonly.addWidget(self.initButton) self.setButton = QtWidgets.QPushButton('set') self.setButton.clicked.connect(lambda: self.customSet()) self.setButton.setEnabled(False) buttonly.addWidget(self.setButton) self.enableCheck = QtWidgets.QCheckBox('enable') self.enableCheck.clicked[bool].connect(lambda x: self.customEnable(x)) buttonly.addWidget(self.enableCheck) customLayout.addWidget(buttons) customLayout.addWidget(QtWidgets.QLabel('Mode:')) self.modeComboBox = pg.ComboBox() customLayout.addWidget(self.modeComboBox) customLayout.addWidget(QtWidgets.QLabel('OpenDuration(ms):')) self.opentimeSpinbox = pg.SpinBox(value=20, bounds=(1, None), step=1) customLayout.addWidget(self.opentimeSpinbox) customLayout.addWidget(QtWidgets.QLabel('ShutDuration(ms):')) self.shuttimeSpinbox = pg.SpinBox(value=200, bounds=(1, None), step=1) customLayout.addWidget(self.shuttimeSpinbox) customLayout.addWidget(QtWidgets.QLabel('RepeatCount:')) self.countSpinbox = pg.SpinBox(value=1, bounds=(1, None), step=1) customLayout.addWidget(self.countSpinbox) customLayout.addWidget(QtWidgets.QLabel('Mode Info:')) self.modeInfoLine = QtWidgets.QLineEdit('None') self.modeInfoLine.setEnabled(False) customLayout.addWidget(self.modeInfoLine) customLayout.addWidget(QtWidgets.QLabel('Enable Info:')) self.enableInfoLine = QtWidgets.QLineEdit('False') self.enableInfoLine.setEnabled(False) customLayout.addWidget(self.enableInfoLine) customLayout.addWidget(QtWidgets.QLabel('OpenDuration Info(ms):')) self.opentimeInfoLine = QtWidgets.QLineEdit('None') self.opentimeInfoLine.setEnabled(False) customLayout.addWidget(self.opentimeInfoLine) customLayout.addWidget(QtWidgets.QLabel('ShutDuration Info(ms):')) self.shuttimeInfoLine = QtWidgets.QLineEdit('None') self.shuttimeInfoLine.setEnabled(False) customLayout.addWidget(self.shuttimeInfoLine) customLayout.addWidget(QtWidgets.QLabel('RepeatCount Info:')) self.countInfoLine = QtWidgets.QLineEdit('None') self.countInfoLine.setEnabled(False) customLayout.addWidget(self.countInfoLine)
def gui(self): s = g.settings['flash_remover'] self.gui_reset() self.window = WindowSelector() self.removeFlash_button = QPushButton('Remove Flash') self.removeFlash_button.pressed.connect(self.removeFlash) self.manuallySetFlash_check = CheckBox() self.manuallySetFlash_check.setValue(False) self.addNoise_check = CheckBox() self.addNoise_check.setValue(True) self.flashStart_slider = pg.SpinBox(int=True, step=1) self.flashStart_slider.setValue(0) self.flashEnd_slider = pg.SpinBox(int=True, step=1) self.flashEnd_slider.setValue(1) self.flashRangeStart_slider = pg.SpinBox(int=True, step=1) self.flashRangeStart_slider.setValue(s['flashRangeStart']) self.flashRangeEnd_slider = pg.SpinBox(int=True, step=1) self.flashRangeEnd_slider.setValue(s['flashRangeEnd']) self.removeMethod = pg.ComboBox() self.methods = {'linear interpolation': 1, 'scaling by noise': 2} self.removeMethod.setItems(self.methods) self.movingAverageWindow_slider = pg.SpinBox(int=True, step=1) self.movingAverageWindow_slider.setValue(s['windowSize']) self.plotAverage_check = CheckBox() self.plotAverage_check.setValue(False) self.useROI_check = CheckBox() self.useROI_check.setValue(False) self.items.append({ 'name': 'window', 'string': 'Select Window', 'object': self.window }) self.items.append({ 'name': 'method', 'string': 'Select Method', 'object': self.removeMethod }) self.items.append({ 'name': 'addNoise', 'string': 'Add noise (linear interpolation only)', 'object': self.addNoise_check }) self.items.append({ 'name': 'blank', 'string': '----- Manual Flash -----', 'object': None }) self.items.append({ 'name': 'manualFlash', 'string': 'Manualy Set Flash', 'object': self.manuallySetFlash_check }) self.items.append({ 'name': 'flashStart', 'string': 'Select Flash Start', 'object': self.flashStart_slider }) self.items.append({ 'name': 'flashEnd', 'string': 'Select Flash End', 'object': self.flashEnd_slider }) self.items.append({ 'name': 'blank', 'string': '----- Automatic Flash Detection -----', 'object': None }) self.items.append({ 'name': 'flashRangeStart', 'string': 'Select Flash Range Start', 'object': self.flashRangeStart_slider }) self.items.append({ 'name': 'flashRangeEnd', 'string': 'Select Flash Range End', 'object': self.flashRangeEnd_slider }) self.items.append({ 'name': 'windowSize', 'string': 'Select Moving Average Window Size', 'object': self.movingAverageWindow_slider }) self.items.append({ 'name': 'useROI', 'string': 'User defined ROI for average', 'object': self.useROI_check }) self.items.append({ 'name': 'showAverage', 'string': 'Plot flash detection result', 'object': self.plotAverage_check }) self.items.append({ 'name': 'removeFlash_button', 'string': '', 'object': self.removeFlash_button }) super().gui()
# Reset item list; value should be set automatically cb.setItems(items) assert cb.value() == 2 # Clear item list; repopulate with same names and new values items = {'a': 4, 'b': 5, 'c': 6} cb.clear() cb.setItems(items) assert cb.value() == 5 # Set list instead of dict cb.setItems(list(items.keys())) assert str(cb.currentText()) == 'b' cb.setValue('c') assert cb.value() == str(cb.currentText()) assert cb.value() == 'c' cb.setItemValue('c', 7) assert cb.value() == 7 if __name__ == '__main__': cb = pg.ComboBox() cb.show() cb.setItems({'': None, 'a': 1, 'b': 2, 'c': 3}) def fn(ind): print("New value: %s" % cb.value()) cb.currentIndexChanged.connect(fn)
def gui(self): self.filename = '' self.gui_reset() s=g.settings['puffMapper'] #buttons self.plotChart_button = QPushButton('Create Line plot') self.plotChart_button.pressed.connect(self.plotData) self.generateHeatmap_button = QPushButton('Create Heatmap') self.generateHeatmap_button.pressed.connect(self.createHeatmap) #checkbox self.sorted_checkbox = CheckBox() self.sorted_checkbox.setChecked(s['sortedByMax']) #comboboxes self.xFunc_Box = pg.ComboBox() xFuncs = {'mean':np.mean, 'max':np.max, 'median':np.median} self.xFunc_Box.setItems(xFuncs) #spinboxes #Frames self.startFrame_Box = pg.SpinBox(int=True, step=1) self.startFrame_Box.setMinimum(0) self.startFrame_Box.setMaximum(1000000) self.startFrame_Box.setValue(s['startFrame']) self.nFrames_Box = pg.SpinBox(int=True, step=1) self.nFrames_Box.setMinimum(0) self.nFrames_Box.setMaximum(1000000) self.nFrames_Box.setValue(s['nFrames']) self.xBin_Box = pg.SpinBox(int=True, step=2) self.xBin_Box.setMinimum(1) self.xBin_Box.setMaximum(10000) self.xBin_Box.setValue(s['xBin']) self.yExpand_Box = pg.SpinBox(int=True, step=1) self.yExpand_Box.setMinimum(1) self.yExpand_Box.setMaximum(1000) self.yExpand_Box.setValue(s['yExpand']) #export file selector self.getFile = FileSelector() #connections self.getFile.valueChanged.connect(self.loadData) ################################################################# #self.exportFolder = FolderSelector('*.txt') #MEPPS self.items.append({'name': 'blank1 ', 'string': '------------- Parameters ---------------', 'object': None}) self.items.append({'name': 'startFrame', 'string': 'Set start frame ', 'object': self.startFrame_Box}) self.items.append({'name': 'nFrames', 'string': 'Set number of frames ', 'object': self.nFrames_Box}) self.items.append({'name': 'xBin', 'string': 'Set x-axis binning number ', 'object': self.xBin_Box}) self.items.append({'name': 'xBinType', 'string': 'Set x-axis bin function ', 'object': self.xFunc_Box}) self.items.append({'name': 'yExpand', 'string': 'Set y-axis expansion value ', 'object': self.yExpand_Box}) self.items.append({'name': 'sortedByMax', 'string': 'Sorted by maximum', 'object': self.sorted_checkbox}) self.items.append({'name': 'blank ', 'string': '-------------------------------------------', 'object': None}) self.items.append({'name': 'filepath ', 'string': '', 'object': self.getFile}) self.items.append({'name': 'heatmap', 'string': '', 'object': self.generateHeatmap_button }) self.items.append({'name': 'lineplot', 'string': '', 'object': self.plotChart_button }) super().gui() ###################################################################### return
def setupUi(self, MainWindow, step, ref): self.step = step self.ref = ref MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(1000, 600) self.centralWidget = QtGui.QWidget(MainWindow) self.centralWidget.setObjectName(_fromUtf8("centralWidget")) ### MAIN LAYOUT ### self.horizontalLayout_1 = QtGui.QHBoxLayout(self.centralWidget) self.horizontalLayout_1.setObjectName(_fromUtf8("horizontalLayout_1")) ### LEFT SIDE LAYOUT ### self.verticalLayout_1 = QtGui.QVBoxLayout() self.verticalLayout_1.setObjectName(_fromUtf8("verticalLayout_1")) ### PLOT LAYOUT ### self.plotTabs = QtGui.QTabWidget(self.centralWidget) self.verticalLayout_1.addWidget(self.plotTabs) self.plotTab_1 = QtGui.QWidget() self.plotTab_1.setObjectName(_fromUtf8("plotTab_1")) self.plotLayout = QtGui.QVBoxLayout(self.plotTab_1) self.plotTabs.addTab(self.plotTab_1, "Wideband") self.plotTab_2 = QtGui.QWidget() self.plotTab_2.setObjectName(_fromUtf8("plotTab_2")) self.plotLayout_2 = QtGui.QVBoxLayout(self.plotTab_2) self.plotTabs.addTab(self.plotTab_2, "HF") # self.plotTab_3 = QtGui.QWidget() # self.plotTab_3.setObjectName(_fromUtf8("plotTab_3")) # self.plotLayout_3 = QtGui.QVBoxLayout(self.plotTab_3) # self.plotTabs.addTab(self.plotTab_3, "RTSA") # # self.plotTab_4 = QtGui.QWidget() # self.plotTab_4.setObjectName(_fromUtf8("plotTab_4")) # self.plotLayout_4 = QtGui.QVBoxLayout(self.plotTab_4) # self.plotTabs.addTab(self.plotTab_4, "IQ") ### FREQ SETTINGS LAYOUT ### self.freqBox = QtGui.QGroupBox(self.centralWidget) self.freqBox.setObjectName(_fromUtf8("freqBox")) self.freqVLayout_1 = QtGui.QVBoxLayout(self.freqBox) self.freqHLayout_1 = QtGui.QHBoxLayout() self.freqHLayout_1.setObjectName(_fromUtf8("freqHLayout_1")) self.freqVLayout_1.addLayout(self.freqHLayout_1) # Start frequency setting self.startLayout = QtGui.QFormLayout() self.startLayout.setObjectName(_fromUtf8("startLayout")) self.startLabel = QtGui.QLabel(self.freqBox) self.startLabel.setObjectName(_fromUtf8("startLabel")) self.startLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.startLabel) self.startEdit = pg.SpinBox(self.freqBox, suffix=' MHz', siPrefix=False) self.startEdit.setObjectName(_fromUtf8("startEdit")) self.startEdit.setDecimals(2) self.startEdit.setSingleStep(0.1) self.startEdit.setKeyboardTracking(False) self.startLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.startEdit) self.freqHLayout_1.addLayout(self.startLayout) # Stop frequency setting self.stopLayout = QtGui.QFormLayout() self.stopLayout.setObjectName(_fromUtf8("stopLayout")) self.stopLabel = QtGui.QLabel(self.freqBox) self.stopLabel.setObjectName(_fromUtf8("stopLabel")) self.stopLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.stopLabel) self.stopEdit = pg.SpinBox(self.freqBox, suffix=' MHz', siPrefix=False, decimals=2) self.stopEdit.setObjectName(_fromUtf8("stopEdit")) #self.stopEdit.setDecimals(2) self.stopEdit.setSingleStep(0.1) self.stopEdit.setKeyboardTracking(False) self.stopLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.stopEdit) self.freqHLayout_1.addLayout(self.stopLayout) # RBW setting self.rbwLayout = QtGui.QFormLayout() self.rbwLayout.setObjectName(_fromUtf8("rbwLayout")) self.rbwLabel = QtGui.QLabel(self.freqBox) self.rbwLabel.setObjectName(_fromUtf8("rbwLabel")) self.rbwLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.rbwLabel) self.rbwEdit = pg.ComboBox(self.freqBox) self.rbwEdit.setObjectName(_fromUtf8("rbwEdit")) self.rbwEdit.addItem('0,21 kHz', 16384) self.rbwEdit.addItem('0,42 kHz', 8192) self.rbwEdit.addItem('0,84 kHz', 4096) self.rbwEdit.addItem('1,69 kHz', 2048) self.rbwEdit.addItem('3,38 kHz', 1024) self.rbwEdit.addItem('6,75 kHz', 512) self.rbwEdit.addItem('13,5 kHz', 256) self.rbwEdit.addItem('27 kHz', 128) self.rbwEdit.addItem('54 kHz', 64) self.rbwEdit.addItem('108 kHz', 32) self.rbwEdit.addItem('216 kHz', 16) self.rbwEdit.addItem('432 kHz', 8) self.rbwEdit.setCurrentIndex(4) self.rbwLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.rbwEdit) self.freqHLayout_1.addLayout(self.rbwLayout) spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.freqHLayout_1.addItem(spacerItem) self.freqHLayout_2 = QtGui.QHBoxLayout() self.freqHLayout_2.setObjectName(_fromUtf8("freqHLayout_2")) self.freqVLayout_1.addLayout(self.freqHLayout_2) # Center frequency setting self.centerLayout = QtGui.QFormLayout() self.centerLayout.setObjectName(_fromUtf8("centerLayout")) self.centerLabel = QtGui.QLabel(self.freqBox) self.centerLabel.setObjectName(_fromUtf8("centerLabel")) self.centerLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.centerLabel) self.centerEdit = pg.SpinBox(self.freqBox, suffix=' MHz', siPrefix=False) self.centerEdit.setObjectName(_fromUtf8("centerEdit")) self.centerEdit.setDecimals(2) self.centerEdit.setSingleStep(1) self.centerEdit.setKeyboardTracking(False) self.centerLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.centerEdit) self.freqHLayout_2.addLayout(self.centerLayout) # Span setting self.spanLayout = QtGui.QFormLayout() self.spanLayout.setObjectName(_fromUtf8("spanLayout")) self.spanLabel = QtGui.QLabel(self.freqBox) self.spanLabel.setObjectName(_fromUtf8("spanLabel")) self.spanLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.spanLabel) self.spanEdit = pg.SpinBox(self.freqBox, suffix=' MHz', siPrefix=False) self.spanEdit.setObjectName(_fromUtf8("spanEdit")) self.spanEdit.setDecimals(2) self.spanEdit.setRange(self.step/1e6, 1250) self.spanEdit.setSingleStep(0.1) self.spanEdit.setKeyboardTracking(False) self.spanLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.spanEdit) self.freqHLayout_2.addLayout(self.spanLayout) self.freqHLayout_2.addItem(spacerItem) self.verticalLayout_1.addWidget(self.freqBox) self.horizontalLayout_1.addLayout(self.verticalLayout_1) ### RIGHT SIDE LAYOUT ### self.settingsBox = QtGui.QGroupBox(self.centralWidget) self.settingsBox.setMaximumSize(QtCore.QSize(250, 16777215)) self.settingsBox.setObjectName(_fromUtf8("settingsBox")) self.settingsVLayout_1 = QtGui.QVBoxLayout(self.settingsBox) self.settingsVLayout_1.setObjectName(_fromUtf8("settingsVLayout_1")) # Start button self.settingsHLayout_1 = QtGui.QHBoxLayout() self.startButton = QtGui.QPushButton() self.startButton.setText('START') self.settingsHLayout_1.addWidget(self.startButton) # Stop button self.stopButton = QtGui.QPushButton() self.stopButton.setText('STOP') self.stopButton.setEnabled(False) self.settingsHLayout_1.addWidget(self.stopButton) self.settingsVLayout_1.addLayout(self.settingsHLayout_1) # Gain slider self.gainLayout = QtGui.QFormLayout() self.gainLayout.setObjectName(_fromUtf8("gainLayout")) self.gainLabel = QtGui.QLabel(self.settingsBox) self.gainLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.gainLabel.setObjectName(_fromUtf8("gainLabel")) self.gainLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.gainLabel) self.gainSlider = QtGui.QSlider(self.settingsBox) self.gainSlider.setMaximum(49) self.gainSlider.setSingleStep(1) self.gainSlider.setProperty("value", 20) self.gainSlider.setOrientation(QtCore.Qt.Horizontal) self.gainSlider.setObjectName(_fromUtf8("gainSlider")) self.gainLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.gainSlider) self.settingsVLayout_1.addLayout(self.gainLayout) # Gain display self.gainDisp = QtGui.QLCDNumber(self.settingsBox) self.gainDisp.setSegmentStyle(QtGui.QLCDNumber.Flat) self.settingsVLayout_1.addWidget(self.gainDisp) # Reference level setting self.refLayout = QtGui.QFormLayout() self.refLayout.setObjectName(_fromUtf8("refLayout")) self.refLabel = QtGui.QLabel(self.settingsBox) self.refLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.refLabel.setObjectName(_fromUtf8("refLabel")) self.refLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.refLabel) self.refEdit = QtGui.QDoubleSpinBox(self.settingsBox) self.refEdit.setObjectName(_fromUtf8("refEdit")) self.refEdit.setValue(self.ref) self.refEdit.setDecimals(0) self.refEdit.setRange(-50, 50) self.refEdit.setKeyboardTracking(False) self.refLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.refEdit) self.settingsVLayout_1.addLayout(self.refLayout) spacerItem1 = QtGui.QSpacerItem(158, 304, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.settingsVLayout_1.addItem(spacerItem1) ### Settings tabs ### self.settingsTabs = QtGui.QTabWidget(self.settingsBox) self.settingsVLayout_1.addWidget(self.settingsTabs) self.settingsTabs.setEnabled(False) # Misc. options self.tab_1 = QtGui.QWidget() self.settingsTabs.addTab(self.tab_1, "Misc.") self.miscLayout = QtGui.QVBoxLayout() self.saveButton = QtGui.QPushButton(self.settingsBox) self.saveButton.setText("Save plot") self.miscLayout.addWidget(self.saveButton) self.avgLayout_1 = QtGui.QFormLayout() self.avgLayout_1.setObjectName(_fromUtf8("avgLayout_1")) self.avgLabel_1 = QtGui.QLabel(self.settingsBox) self.avgLabel_1.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.avgLabel_1.setObjectName(_fromUtf8("avgLabel")) self.avgLayout_1.setWidget(0, QtGui.QFormLayout.LabelRole, self.avgLabel_1) self.avgCheck = QtGui.QCheckBox(self.settingsBox) self.avgLayout_1.setWidget(0, QtGui.QFormLayout.FieldRole, self.avgCheck) self.miscLayout.addLayout(self.avgLayout_1) self.avgLayout_2 = QtGui.QFormLayout() self.avgLabel_2 = QtGui.QLabel(self.settingsBox) self.avgLabel_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.avgLabel_2.setObjectName(_fromUtf8("avgLabel_2")) self.avgLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.avgLabel_2) self.avgEdit = QtGui.QDoubleSpinBox(self.settingsBox) self.avgEdit.setDecimals(0) self.avgEdit.setRange(1, 100) self.avgEdit.setKeyboardTracking(False) self.avgEdit.setValue(10) self.avgLayout_2.setWidget(0, QtGui.QFormLayout.FieldRole, self.avgEdit) self.miscLayout.addLayout(self.avgLayout_2) self.holdLayout = QtGui.QFormLayout() self.holdLayout.setObjectName(_fromUtf8("holdLayout")) self.holdLabel = QtGui.QLabel(self.settingsBox) self.holdLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.holdLabel.setObjectName(_fromUtf8("holdLabel")) self.holdLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.holdLabel) self.holdCheck = QtGui.QCheckBox(self.settingsBox) self.holdLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.holdCheck) self.miscLayout.addLayout(self.holdLayout) self.peakLayout = QtGui.QFormLayout() self.peakLayout.setObjectName(_fromUtf8("peakLayout")) self.peakLabel = QtGui.QLabel(self.settingsBox) self.peakLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.peakLabel.setObjectName(_fromUtf8("peakLabel")) self.peakLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.peakLabel) self.peakCheck = QtGui.QCheckBox(self.settingsBox) self.peakLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.peakCheck) self.miscLayout.addLayout(self.peakLayout) self.waterfallLayout = QtGui.QFormLayout() self.waterfallLayout.setObjectName(_fromUtf8("waterfallLayout")) self.waterfallLabel = QtGui.QLabel(self.settingsBox) self.waterfallLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.waterfallLabel.setObjectName(_fromUtf8("waterfallLabel")) self.waterfallLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.waterfallLabel) self.waterfallCheck = QtGui.QCheckBox(self.settingsBox) self.waterfallLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.waterfallCheck) self.miscLayout.addLayout(self.waterfallLayout) self.correctButton = QtGui.QPushButton(self.settingsBox) self.correctButton.setText("Correction") self.miscLayout.addWidget(self.correctButton) self.tab_1.setLayout(self.miscLayout) # Traces self.tab_2 = QtGui.QWidget() self.settingsTabs.addTab(self.tab_2, "Traces") self.traceLayout = QtGui.QVBoxLayout() self.traceButton_1 = QtGui.QPushButton(self.settingsBox) self.traceButton_1.setText("Save trace 1") self.traceLayout.addWidget(self.traceButton_1) self.traceButton_2 = QtGui.QPushButton(self.settingsBox) self.traceButton_2.setText("Save trace 2") self.traceLayout.addWidget(self.traceButton_2) self.traceButton_3 = QtGui.QPushButton(self.settingsBox) self.traceButton_3.setText("Save trace 3") self.traceLayout.addWidget(self.traceButton_3) self.traces = [self.traceButton_1, self.traceButton_2, self.traceButton_3] self.tab_2.setLayout(self.traceLayout) # Markers self.tab_3 = QtGui.QWidget() self.settingsTabs.addTab(self.tab_3, "Markers") self.markerLayout = QtGui.QGridLayout() self.markerLabel_1 = QtGui.QLabel(self.settingsBox) self.markerLabel_1.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.markerLayout.addWidget(self.markerLabel_1, 0,0) self.markerCheck_1 = QtGui.QCheckBox(self.settingsBox) self.markerLayout.addWidget(self.markerCheck_1, 0,1) self.markerEdit_1 = QtGui.QDoubleSpinBox(self.settingsBox) self.markerEdit_1.setDecimals(2) self.markerEdit_1.setKeyboardTracking(False) self.markerEdit_1.setDisabled(True) self.markerEdit_1.setSingleStep(0.1) self.markerLayout.addWidget(self.markerEdit_1, 0,2) self.markerLabel_2 = QtGui.QLabel(self.settingsBox) self.markerLabel_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.markerLayout.addWidget(self.markerLabel_2, 2,0) self.markerCheck_2 = QtGui.QCheckBox(self.settingsBox) self.markerLayout.addWidget(self.markerCheck_2, 2,1) self.markerEdit_2 = QtGui.QDoubleSpinBox(self.settingsBox) self.markerEdit_2.setDecimals(2) self.markerEdit_2.setKeyboardTracking(False) self.markerEdit_2.setDisabled(True) self.markerEdit_2.setSingleStep(0.1) self.markerLayout.addWidget(self.markerEdit_2, 2,2) self.markerLabel_3 = QtGui.QLabel(self.settingsBox) self.markerLabel_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.markerLayout.addWidget(self.markerLabel_3, 3,0) self.markerCheck_3 = QtGui.QCheckBox(self.settingsBox) self.markerLayout.addWidget(self.markerCheck_3, 3,1) self.markerEdit_3 = QtGui.QDoubleSpinBox(self.settingsBox) self.markerEdit_3.setDecimals(2) self.markerEdit_3.setKeyboardTracking(False) self.markerEdit_3.setDisabled(True) self.markerEdit_3.setSingleStep(0.1) self.markerLayout.addWidget(self.markerEdit_3, 3,2) self.markerLabel_4 = QtGui.QLabel(self.settingsBox) self.markerLabel_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.markerLayout.addWidget(self.markerLabel_4, 4,0) self.markerCheck_4 = QtGui.QCheckBox(self.settingsBox) self.markerLayout.addWidget(self.markerCheck_4, 4,1) self.markerEdit_4 = QtGui.QDoubleSpinBox(self.settingsBox) self.markerEdit_4.setDecimals(2) self.markerEdit_4.setKeyboardTracking(False) self.markerEdit_4.setDisabled(True) self.markerEdit_4.setSingleStep(0.1) self.markerLayout.addWidget(self.markerEdit_4, 4,2) self.deltaLabel = QtGui.QLabel(self.settingsBox) self.deltaLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.markerLayout.addWidget(self.deltaLabel, 1,0) self.deltaCheck = QtGui.QCheckBox(self.settingsBox) self.markerLayout.addWidget(self.deltaCheck, 1,1) self.deltaEdit = QtGui.QDoubleSpinBox(self.settingsBox) self.deltaEdit.setDecimals(2) self.deltaEdit.setSingleStep(0.1) self.deltaEdit.setKeyboardTracking(False) self.deltaEdit.setDisabled(True) self.markerLayout.addWidget(self.deltaEdit, 1,2) self.deltaCheck.setDisabled(True) self.tab_3.setLayout(self.markerLayout) self.horizontalLayout_1.addWidget(self.settingsBox) ### MISC Qt FUNCTIONS ### MainWindow.setCentralWidget(self.centralWidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 847, 21)) self.menubar.setObjectName(_fromUtf8("menubar")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) #self.statusbar.addWidget(self.peakStatus) self.statusbar.setVisible(False) self.retlanslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def init_ui(self): layout = QtWidgets.QFormLayout() getter_methods = dict() setter_methods = dict() for parameter_name, parameter_opts in self.parameters.items(): typ = parameter_opts.get('type', str) default = parameter_opts.get('default') if typ == str: w = QtWidgets.QLineEdit(default) activation_method = w.text getter_method = w.text setter_method = w.setText elif typ == int or typ == float: default_opts = { # 'suffix': parameter_opts.get('units', ''), # 'siPrefix': False, 'dec': True, 'int': typ == int, 'minStep': 1 if typ == int else 0.1, 'step': 1 if typ == int else 0.1, 'bounds': [None, None], 'decimals': 8, } opts = dict() if parameter_opts.get('nonnegative', False): opts['bounds'] = [0, None] if typ == int and parameter_opts.get('positive', False): opts['bounds'] = [1, None] for k in default_opts.keys(): opts[k] = parameter_opts.get(k, default_opts[k]) w = SpinBox(unit=parameter_opts.get('units'), **opts) # w = pg.SpinBox(**opts) w.setValue(default) # getter_method = w.value getter_method = w.unit_value setter_method = w.setValue elif typ == bool: w = QtWidgets.QCheckBox() getter_method = w.isChecked setter_method = w.setChecked default = default if default is not None else False w.setChecked(default) elif typ == object: w = parameter_opts['widget'] getter_method = parameter_opts['getter'] setter_method = parameter_opts.get('setter', None) elif typ == range: w = Rangespace(units=parameter_opts.get('units')) getter_method = w.get setter_method = w.set if not default is None: w.set(default) elif typ == list: w = pg.ComboBox() items = parameter_opts.get('items') if type(items) == list: w.setItems(items) else: raise ValueError( 'items must be specified and of type list to add a list type entry to ParamWidget' ) getter_method = w.value setter_method = w.setText if not default is None: try: w.setText(default) except ValueError: pass elif typ == dict: w = pg.ComboBox() items = parameter_opts.get('items') if type(items) == dict: w.setItems(items) else: raise ValueError( 'items must be specified and of type dict to add a dict type entry to ParamWidget' ) getter_method = w.value setter_method = w.setValue if not default is None: w.setValue(default) layout.addRow(parameter_name, w) getter_methods[parameter_name] = getter_method setter_methods[parameter_name] = setter_method self.getter_methods = getter_methods self.setter_methods = setter_methods self.setLayout(layout) return
app = QtGui.QApplication([]) pw = pg.PlotWidget() pw.showGrid(x=True, y=True) #pw.setAutoPan(x=True) #pw.setDownsampling(ds=80) w = QtGui.QWidget() pause_button = QtGui.QPushButton("Pause") export_button = QtGui.QPushButton("Export") x_label = QtGui.QLabel("X-axis:") x_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) x_dropdown = pg.ComboBox(items=possible_data_types) x_dropdown.setValue("TimeElapsed") y_label = QtGui.QLabel("Y-axis:") y_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) y_dropdown = pg.ComboBox(items=possible_data_types) y_dropdown.setValue("Index") transform_label = QtGui.QLabel("Transform") transform_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) #transform_dropdown = pg.ComboBox(items=possible_transform_types) transform_dropdown = QtGui.QComboBox() transform_dropdown.addItems(possible_transform_types) #transform_dropdown.setValue("None") #transform_dropdown.setFlags(QtCore.Qt.ItemIsUserCheckable | Qt.Core.Qt.ItemIsEnabled) #transform_dropdown.setCheckState(QtCore.Qt.Unchecked)
button_seg_layout.setLayout(QtGui.QVBoxLayout()) button_outside = QtGui.QRadioButton("Outside") button_boundary = QtGui.QRadioButton("Boundary") button_inside = QtGui.QRadioButton("Inside") button_seg_can = QtGui.QRadioButton("Segmentation candidate") button_inside.setChecked(True) # Upper divider divider_up = QtGui.QFrame() divider_up.setFrameShape(QtGui.QFrame.HLine) divider_up.setStyleSheet("background-color: #c0c0c0;") # Slice selector combo_slice = pg.ComboBox(button_seg_layout, ["des", "pa", "cito"]) # Lower divider divider_down = QtGui.QFrame() divider_down.setFrameShape(QtGui.QFrame.HLine) divider_down.setStyleSheet("background-color: #c0c0c0;") # Label info_label = QtGui.QLabel(sidebar_label.format("", "", "")) # Side bar - patch group selection button_seg_layout.layout().addWidget(button_outside) button_seg_layout.layout().addWidget(button_boundary) button_seg_layout.layout().addWidget(button_inside) button_seg_layout.layout().addWidget(button_seg_can)