def makeSplitterButton(self, name, splitter, indHandle, indSizes): handle = splitter.handle(indHandle) if handle is None: return isVerical = splitter.orientation() == qt.Qt.Horizontal if name == 'transform' and self.node.transformIn is not None: nameBut = name + ': ' + self.node.transformIn.name else: nameBut = name button = QSplitterButton(nameBut, handle, isVerical) button.setText(button.rawText) splitter.setHandleWidth(SPLITTER_WIDTH) po = qt.QSizePolicy(qt.QSizePolicy.Preferred, qt.QSizePolicy.Preferred) button.setSizePolicy(po) button.clicked.connect( partial(self.handleSplitterButton, button, indSizes)) if isVerical: sLayout = qt.QVBoxLayout() else: sLayout = qt.QHBoxLayout() sLayout.setContentsMargins(0, 0, 0, 0) sLayout.addStretch(1) sLayout.addWidget(button, 0) sLayout.addStretch(1) handle.setLayout(sLayout) self.splitterButtons[name] = button
def __init__(self, item, parent=None): """ :param parent: Parent widget :param PeriodicTableItem item: :class:`PeriodicTableItem` object """ qt.QPushButton.__init__(self, parent) self.item = item """:class:`PeriodicTableItem` object represented by this button""" self.setText(item.symbol) self.setFlat(1) self.setCheckable(0) self.setSizePolicy( qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding)) self.selected = False self.current = False # selection colors self.selected_color = qt.QColor(qt.Qt.yellow) self.current_color = qt.QColor(qt.Qt.gray) self.selected_current_color = qt.QColor(qt.Qt.darkYellow) # element colors if hasattr(item, "bgcolor"): self.bgcolor = qt.QColor(item.bgcolor) else: self.bgcolor = qt.QColor("#FFFFFF") self.brush = qt.QBrush() self.__setBrush() self.clicked.connect(self.clickedSlot)
def __init__(self, **kwargs): super(ConversionParamsWidget, self).__init__(**kwargs) layout = Qt.QGridLayout(self) layout.setContentsMargins(0, 0, 0, 0) # =========== # image binning # =========== row = 0 layout.addWidget(Qt.QLabel('Img binning :'), row, 0) h_layout = Qt.QHBoxLayout() layout.addLayout(h_layout, row, 1, alignment=Qt.Qt.AlignLeft | Qt.Qt.AlignTop) imgbin_h_edit = StyledLineEdit(nChar=5) imgbin_h_edit.setValidator(Qt.QIntValidator(imgbin_h_edit)) imgbin_h_edit.setAlignment(Qt.Qt.AlignRight) imgbin_h_edit.setText(str(_DEFAULT_IMG_BIN[0])) h_layout.addWidget(imgbin_h_edit, alignment=Qt.Qt.AlignLeft) h_layout.addWidget(Qt.QLabel(' x ')) imgbin_v_edit = StyledLineEdit(nChar=5) imgbin_v_edit.setValidator(Qt.QIntValidator(imgbin_v_edit)) imgbin_v_edit.setAlignment(Qt.Qt.AlignRight) imgbin_v_edit.setText(str(_DEFAULT_IMG_BIN[1])) h_layout.addWidget(imgbin_v_edit, alignment=Qt.Qt.AlignLeft) h_layout.addWidget(Qt.QLabel('px')) h_layout.addStretch(1) # =========== # qspace size # =========== row += 1 layout.addWidget(Qt.QLabel('Q space size :'), row, 0) h_layout = Qt.QHBoxLayout() layout.addLayout(h_layout, row, 1, alignment=Qt.Qt.AlignLeft | Qt.Qt.AlignTop) qsize_x_edit = StyledLineEdit(nChar=5) qsize_x_edit.setValidator(Qt.QDoubleValidator(qsize_x_edit)) qsize_x_edit.setAlignment(Qt.Qt.AlignRight) h_layout.addWidget(qsize_x_edit) h_layout.addWidget(Qt.QLabel(' x ')) qsize_y_edit = StyledLineEdit(nChar=5) qsize_y_edit.setValidator(Qt.QDoubleValidator(qsize_y_edit)) qsize_y_edit.setAlignment(Qt.Qt.AlignRight) h_layout.addWidget(qsize_y_edit) h_layout.addWidget(Qt.QLabel(' x ')) qsize_z_edit = StyledLineEdit(nChar=5) qsize_z_edit.setValidator(Qt.QDoubleValidator(qsize_z_edit)) qsize_z_edit.setAlignment(Qt.Qt.AlignRight) h_layout.addWidget(qsize_z_edit) h_layout.addWidget(Qt.QLabel('bins')) h_layout.addStretch(1) self.__imgbin_h_edit = imgbin_h_edit self.__imgbin_v_edit = imgbin_v_edit self.__qsize_x_edit = qsize_x_edit self.__qsize_y_edit = qsize_y_edit self.__qsize_z_edit = qsize_z_edit # =========== # size constraints # =========== self.setSizePolicy( Qt.QSizePolicy(Qt.QSizePolicy.Fixed, Qt.QSizePolicy.Fixed))
def __init__(self, *args): qt.QWidget.__init__(self, *args) self.setSizePolicy(qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Fixed))
def __init__(self, read_only=False, **kwargs): super(AcqParamsWidget, self).__init__(**kwargs) layout = Qt.QGridLayout(self) layout.setContentsMargins(0, 0, 0, 0) self.__read_only = read_only self.__beam_energy = None self.__dir_beam_h = None self.__dir_beam_v = None self.__chpdeg_h = None self.__chpdeg_v = None class DblValidator(Qt.QDoubleValidator): def validate(self, text, pos): if len(text) == 0: return Qt.QValidator.Acceptable, text, pos return super(DblValidator, self).validate(text, pos) def dblLineEditWidget(width): wid = StyledLineEdit(nChar=width, readOnly=read_only) wid.setValidator(DblValidator()) return wid # =========== # beam energy # =========== row = 0 h_layout = Qt.QHBoxLayout() beam_nrg_edit = dblLineEditWidget(8) h_layout.addWidget(beam_nrg_edit) h_layout.addWidget(Qt.QLabel('<b>eV</b>')) layout.addWidget(Qt.QLabel('Beam energy :'), row, 0) layout.addLayout(h_layout, row, 1, alignment=Qt.Qt.AlignLeft | Qt.Qt.AlignTop) # === row += 1 h_line = Qt.QFrame() h_line.setFrameShape(Qt.QFrame.HLine) h_line.setFrameShadow(Qt.QFrame.Sunken) layout.addWidget(h_line, row, 0, 1, 2) # =========== # direct beam # =========== row += 1 h_layout = Qt.QHBoxLayout() layout.addLayout(h_layout, row, 1, alignment=Qt.Qt.AlignLeft | Qt.Qt.AlignTop) dir_beam_h_edit = dblLineEditWidget(6) h_layout.addWidget(Qt.QLabel('v=')) h_layout.addWidget(dir_beam_h_edit) dir_beam_v_edit = dblLineEditWidget(6) h_layout.addWidget(Qt.QLabel(' h=')) h_layout.addWidget(dir_beam_v_edit) h_layout.addWidget(Qt.QLabel('<b>px</b>')) layout.addWidget(Qt.QLabel('Direct beam :'), row, 0) # === row += 1 h_line = Qt.QFrame() h_line.setFrameShape(Qt.QFrame.HLine) h_line.setFrameShadow(Qt.QFrame.Sunken) layout.addWidget(h_line, row, 0, 1, 3) # =========== # chan per degree # =========== row += 1 h_layout = Qt.QHBoxLayout() layout.addLayout(h_layout, row, 1, alignment=Qt.Qt.AlignLeft | Qt.Qt.AlignTop) chpdeg_h_edit = dblLineEditWidget(6) h_layout.addWidget(Qt.QLabel('v=')) h_layout.addWidget(chpdeg_h_edit) chpdeg_v_edit = dblLineEditWidget(6) h_layout.addWidget(Qt.QLabel(' h=')) h_layout.addWidget(chpdeg_v_edit) h_layout.addWidget(Qt.QLabel('<b>px</b>')) layout.addWidget(Qt.QLabel('Chan. per deg. :'), row, 0) # === row += 1 h_line = Qt.QFrame() h_line.setFrameShape(Qt.QFrame.HLine) h_line.setFrameShadow(Qt.QFrame.Sunken) layout.addWidget(h_line, row, 0, 1, 3) # =========== # size constraints # =========== self.setSizePolicy(Qt.QSizePolicy(Qt.QSizePolicy.Fixed, Qt.QSizePolicy.Fixed)) # named tuple with references to all the important widgets self.__beam_nrg_edit = beam_nrg_edit self.__dir_beam_h_edit = dir_beam_h_edit self.__dir_beam_v_edit = dir_beam_v_edit self.__chpdeg_h_edit = chpdeg_h_edit self.__chpdeg_v_edit = chpdeg_v_edit
def __init__(self, merger, **kwargs): super(_ScansSelectDialog, self).__init__(**kwargs) layout = Qt.QGridLayout(self) matched = merger.matched_ids selected = merger.selected_ids table_widget = Qt.QTableWidget(len(matched), self.COL_COUNT) table_widget.setHorizontalHeaderLabels([ '', 'ID', 'M0', 'start', 'end', 'step', 'M1', 'start', 'end', 'step', 'Image File' ]) def _sizeHint(self): width = ( sum([self.columnWidth(i) for i in range(self.columnCount())]) + self.verticalHeader().width() + 20) return Qt.QSize(width, self.height()) table_widget.sizeHint = MethodType(_sizeHint, table_widget) table_widget.minimumSize = MethodType(_sizeHint, table_widget) table_widget.maximumSize = MethodType(_sizeHint, table_widget) self.setSizePolicy( Qt.QSizePolicy(Qt.QSizePolicy.Fixed, Qt.QSizePolicy.Minimum)) for num, scan_id in enumerate(matched): command = merger.get_scan_command(scan_id) item = Qt.QTableWidgetItem() item.setFlags(Qt.Qt.ItemIsUserCheckable | Qt.Qt.ItemIsEditable | Qt.Qt.ItemIsSelectable | Qt.Qt.ItemIsEnabled) state = Qt.Qt.Checked if scan_id in selected else Qt.Qt.Unchecked item.setCheckState(state) table_widget.setItem(num, self.SEL_COL, item) def _add_col(value, col_idx): item = Qt.QTableWidgetItem(value) item.setFlags(item.flags() ^ Qt.Qt.ItemIsEditable) item.setTextAlignment(Qt.Qt.AlignRight) table_widget.setItem(num, col_idx, item) _add_col(str(scan_id), self.ID_COL) _add_col(command['motor_0'], self.M0_COL) _add_col(command['motor_0_start'], self.M0_START_COL) _add_col(command['motor_0_end'], self.M0_END_COL) _add_col(command['motor_0_steps'], self.M0_STEP_COL) _add_col(command['motor_1'], self.M1_COL) _add_col(command['motor_1_start'], self.M1_START_COL) _add_col(command['motor_1_end'], self.M1_END_COL) _add_col(command['motor_1_steps'], self.M1_STEP_COL) img_file = merger.get_scan_image(scan_id) item = Qt.QTableWidgetItem(os.path.basename(img_file)) item.setFlags(item.flags() ^ Qt.Qt.ItemIsEditable) item.setToolTip(img_file) table_widget.setItem(num, self.IMG_FILE_COL, item) table_widget.resizeColumnsToContents() table_widget.resizeRowsToContents() layout.addWidget(table_widget, 0, 0, Qt.Qt.AlignLeft) table_widget.setColumnHidden(self.M0_COL, True) table_widget.setColumnHidden(self.M0_START_COL, True) table_widget.setColumnHidden(self.M0_END_COL, True) table_widget.setColumnHidden(self.M0_STEP_COL, True) table_widget.setColumnHidden(self.M1_COL, True) table_widget.setColumnHidden(self.M1_START_COL, True) table_widget.setColumnHidden(self.M1_END_COL, True) table_widget.setColumnHidden(self.M1_STEP_COL, True) bnLayout = Qt.QGridLayout() layout.addLayout(bnLayout, 1, 0) selBn = Qt.QPushButton('Select') unselBn = Qt.QPushButton('Unselect') bnLayout.addWidget(selBn, 0, 0, Qt.Qt.AlignLeft) bnLayout.addWidget(unselBn, 0, 1, Qt.Qt.AlignLeft) selBn.clicked.connect(self.__selectClicked) unselBn.clicked.connect(self.__unselectClicked) bnLayout.setColumnStretch(2, 1) more_bn = FixedSizePushButon('More') bnLayout.addWidget(more_bn, 0, 3, Qt.Qt.AlignRight) bn_box = Qt.QDialogButtonBox(Qt.QDialogButtonBox.Ok | Qt.QDialogButtonBox.Cancel) bn_box.button(Qt.QDialogButtonBox.Ok).setText('Apply') layout.addWidget(bn_box, 2, 0) bn_box.accepted.connect(self.__onAccept) bn_box.rejected.connect(self.reject) more_bn.clicked.connect(self.__showMore) self.__table_widget = table_widget self.__more_bn = more_bn self.__merger = merger