def __init__(self, parent=None, item=None): super().__init__(parent) self.setWindowModality(Qt.WindowModal) self.setWindowTitle(self.tr("Edit…")) nameLabel = QLabel(self.tr("Name:"), self) self.nameEdit = QLineEdit(self) self.nameEdit.setFocus(Qt.OtherFocusReason) validator = QDoubleValidator(self) validator.setLocale(QLocale.c()) xLabel = QLabel(self.tr("X:"), self) self.xEdit = QLineEdit(self) self.xEdit.setValidator(validator) yLabel = QLabel(self.tr("Y:"), self) self.yEdit = QLineEdit(self) self.yEdit.setValidator(validator) buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) layout = QGridLayout(self) line = 0 layout.addWidget(nameLabel, line, 0) layout.addWidget(self.nameEdit, line, 1, 1, 3) line += 1 layout.addWidget(xLabel, line, 0) layout.addWidget(self.xEdit, line, 1) layout.addWidget(yLabel, line, 2) layout.addWidget(self.yEdit, line, 3) line += 1 layout.addWidget(buttonBox, line, 3) self.setLayout(layout)
def initUI(self): # initialize widgets and layouts cenWidget = QWidget(self) vertLayout = QVBoxLayout(cenWidget) gridWidget = QWidget() gridLayout = QGridLayout(gridWidget) gridWidget.setLayout(gridLayout) self.hintField = QLabel(parent=cenWidget) # configure text filed and validator self.textField = QLineEdit() f = self.textField.font() f.setPointSize(18) self.textField.setFont(f) validator = QDoubleValidator() validator.setLocale(QLocale('English')) self.textField.setValidator(validator) # add widgets to top level layout vertLayout.addWidget(self.hintField) vertLayout.addWidget(self.textField) vertLayout.addWidget(gridWidget) # add buttons to grid layout self.buttonInstances = [QPushButton(item) for item in self.buttonsText] for i, button in enumerate(self.buttonInstances): button.clicked.connect(partial(self.calculateValue, button.text())) gridLayout.addWidget(button, i//self.col_num, i % self.col_num) self.setCentralWidget(cenWidget)
def __init__(self, parent=None): super().__init__(parent) self.ui = self.__class__.ui[0]() self.ui.setupUi(self) self.ui.barcodes_fw.setLabel("Forward barcodes:") self.ui.barcodes_rev.setLabel("Reverse barcodes:") self.ui.named_inserts.setLabel("Named variable sequences:") style = QApplication.style() self.ui.fromFileBtn.setIcon(style.standardIcon(QStyle.SP_DirOpenIcon, None, self.ui.fromFileBtn)) if QIcon.hasThemeIcon("edit-paste"): self.ui.fromClipboardBtn.setIcon(QIcon.fromTheme("edit-paste")) else: self.ui.fromClipboardBtn.setText("Paste") cellsvalidator = QDoubleValidator(0, 1, 1000) cellsvalidator.setLocale(QLocale(QLocale.English, QLocale.UnitedStates)) self.cellsdelegate = SimpleDelegate(cellsvalidator, self) proto = QTableWidgetItem() proto.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEditable | Qt.ItemIsEnabled) proto.setData(Qt.EditRole, "0.0") self.ui.sortedCellsTbl.setItemPrototype(proto) self.ui.sortedCellsTbl.setItemDelegate(self.cellsdelegate) self.ui.sortedCellsTbl.cellChanged.connect(self._validChanged) self.ui.insertSequence.setValidator(QRegularExpressionValidator(QRegularExpression("^([atcg]+)?[n]+(?(1)[atcg]*|[atcg]+)$", QRegularExpression.CaseInsensitiveOption))) self.ui.fromFileBtn.clicked.connect(self.fromFile) self.ui.fromClipboardBtn.clicked.connect(self.fromClipboard) self.ui.barcodes_fw.rowAdded.connect(self.fwCodeAdded) self.ui.barcodes_fw.rowChanged.connect(self.fwCodeChanged) self.ui.barcodes_fw.rowRemoved.connect(self.fwCodeRemoved) self.ui.barcodes_rev.rowAdded.connect(self.revCodeAdded) self.ui.barcodes_rev.rowChanged.connect(self.revCodeChanged) self.ui.barcodes_rev.rowRemoved.connect(self.revCodeRemoved) self.ui.barcodes_fw.valid.connect(self._validChanged) self.ui.barcodes_rev.valid.connect(self._validChanged) self.ui.named_inserts.valid.connect(self._validChanged) self.ui.insertSequence.textChanged.connect(self._validChanged) self.ui.dsiGrp.toggled.connect(self._validChanged) self.ui.dsiOnFw.toggled.connect(self._validChanged) self.ui.dsiOnRev.toggled.connect(self._validChanged)
def __init__( self, preset_value=NaN, placeholderText="", num_fmt="G", *args, **kwargs ): text = "" if isnan(preset_value) else f"{preset_value:{num_fmt}}" super().__init__( text, *args, placeholderText=placeholderText, **kwargs ) self.editingFinished.connect(self._update_value) # Defaults to notation=QDoubleValidator.ScientificNotation validator = QDoubleValidator(self) validator.setLocale(QLocale("en_US")) self.setValidator(validator) self._num_fmt = num_fmt self._value = preset_value self.setStyleSheet(":read-only {background-color: lightGrey;}")
def initGUI(self): layout = QHBoxLayout() v = QVBoxLayout() line = QFrame() line.setFixedSize(300, 1) line.setStyleSheet('background-color: rgb(149,149,149)') widget = QWidget() grid = QGridLayout() addTrace = QPushButton('add trace') addTrace.setFixedSize(100, 30) addTrace.clicked[bool].connect(self.addTrace) grid.addWidget(addTrace, 9, 0) self.color = pg.ColorButton() self.color.setFixedSize(60, 30) self.color.setColor(color=(225, 200, 50)) grid.addWidget(self.color, 8, 0) names = [ 'Num:', '', '', '', 'Show', '', '', '', 'z_em:', '', '...', '', 'z_abs', '', '...', '', 'HI', '', '...', '', 'H2', '', '...', '', 'Av', '', '...', '', 'Av_bump', '', '...', '', ] positions = [(i, j) for i in range(8) for j in range(4)] for position, name in zip(positions, names): if name == '' or (position[1] == 0 and position[0] not in [0, 2]): continue label = QLabel(name) width = 30 if name == '...' else 45 label.setFixedSize(width, 30) grid.addWidget(label, *position) self.opt_but = OrderedDict([ ('traceNum', [0, 1]), ('z_em_min', [2, 1]), ('z_em_max', [2, 3]), ('z_abs_min', [3, 1]), ('z_abs_max', [3, 3]), ('HI_min', [4, 1]), ('HI_max', [4, 3]), ('H2_min', [5, 1]), ('H2_max', [5, 3]), ('Av_min', [6, 1]), ('Av_max', [6, 3]), ('Av_bump_min', [7, 1]), ('Av_bump_max', [7, 3]), ]) validator = QDoubleValidator() validator.setLocale(QLocale('C')) for opt, pos in self.opt_but.items(): b = QLineEdit(str(getattr(self, opt))) b.setFixedSize(40, 30) b.setValidator(validator) b.textChanged[str].connect(partial(self.onChanged, attr=opt)) grid.addWidget(b, pos[0], pos[1]) for position, name in zip(positions, names): if position[1] == 0 and position[0] not in [0, 2]: s = '' if position[0] == 1 else ':' setattr(self, name, QCheckBox(name + s)) getattr(self, name).setFixedSize(80, 30) grid.addWidget(getattr(self, name), *position) self.Show.setChecked(False) self.z_abs.setChecked(True) self.z_abs.stateChanged.connect(self.checkEvent) self.HI.setChecked(True) self.H2.setChecked(True) self.Av.setChecked(False) self.Av_bump.setChecked(False) widget.setFixedSize(250, 400) widget.setLayout(grid) v.addWidget(widget) v.addWidget(line) self.addSDSSStars = QCheckBox('add SDSS stars') self.addSDSSStars.setFixedSize(200, 30) self.addSDSSStars.stateChanged.connect(self.addStellarLocus) self.addSDSSStars.setChecked(False) v.addWidget(self.addSDSSStars) self.addSDSSQSO = QCheckBox('add SDSS QSO:') self.addSDSSQSO.setFixedSize(160, 30) self.addSDSSQSO.stateChanged.connect(self.addQSOSDSS) self.addSDSSQSO.setChecked(False) v.addWidget(self.addSDSSQSO) h = QHBoxLayout() self.z_SDSS_min = QLineEdit('2.6') self.z_SDSS_min.setFixedSize(50, 30) h.addWidget(self.z_SDSS_min) label = QLabel('...') label.setFixedSize(15, 30) h.addWidget(label) self.z_SDSS_max = QLineEdit('2.8') self.z_SDSS_max.setFixedSize(50, 30) h.addWidget(self.z_SDSS_max) h.addStretch(1) v.addLayout(h) v.addWidget(line) v.addWidget(QLabel('Select by criterion:')) self.criteria = QTextEdit('') self.criteria.setFixedSize(300, 200) self.criteria.setText('r-i 0.6 0.8 \ni-g -2.0 -0.8\ng-r 0.2 0.6') v.addWidget(self.criteria) self.select = QPushButton('Apply') self.select.setFixedSize(80, 30) self.select.clicked[bool].connect(self.applyCriteria) v.addWidget(self.select) v.addWidget(line) v.addWidget(QLabel('Select by name:')) self.names = QTextEdit('') self.names.setFixedSize(300, 200) self.names.setText('7093-0632 \n6439-0160') v.addWidget(self.names) self.shownames = QPushButton('Show') self.shownames.setFixedSize(80, 30) self.shownames.clicked[bool].connect(self.applyNames) v.addWidget(self.shownames) v.addStretch(1) layout.addLayout(v) self.plot = pg.GraphicsWindow(size=(1900, 1800)) self.p = [] for comb in self.combs: p = colorColorPlot(self, comb) setattr(self, p.name, p) self.p.append(getattr(self, p.name)) self.plot.addItem(self.p[-1], row=(len(self.p) - 1) // 4, col=(len(self.p) - 1) % 4) self.setLinks() layout.addWidget(self.plot) self.setLayout(layout)
def initUI(self): self.setGeometry(800 - WIDTH // 2, 450 - HEIGHT // 2, WIDTH, HEIGHT) p = self.palette() p.setColor(self.backgroundRole(), QColor(40, 40, 40)) self.setPalette(p) validator = QDoubleValidator() validator.setLocale(QLocale("Russia")) self.parameters = [QLineEdit(self) for _ in range(3)] offset = 120 for i in range(len(self.parameters)): self.parameters[i].setGeometry(80, offset + 40 * i, 100, 30) self.parameters[i].setValidator(validator) self.parameters[i].setText("1") label = QLabel(self) label.setText("{} = ".format(chr(i + ord('a')))) label.setGeometry(50, offset + 40 * i, 70, 30) label.setStyleSheet("color: white") self.parameters[0].textChanged.connect(self.update_a_field) self.parameters[1].textChanged.connect(self.update_b_field) self.parameters[2].textChanged.connect(self.update_c_field) label = QLabel(self) label.setGeometry(65, 450, 60, 30) label.setText("alpha = ") label.setStyleSheet('color: white') self.alpha_field = QLineEdit(self) self.alpha_field.setGeometry(120, 450, 60, 30) self.alpha_field.setValidator(validator) self.alpha_field.setText(str(self.alpha)) self.alpha_field.textChanged.connect(self.update_alpha_field) label = QLabel(self) label.setGeometry(65, 500, 60, 30) label.setText("beta = ") label.setStyleSheet('color: white') self.beta_field = QLineEdit(self) self.beta_field.setGeometry(120, 500, 60, 30) self.beta_field.setValidator(validator) self.beta_field.setText(str(self.beta)) self.beta_field.textChanged.connect(self.update_beta_field) combo = QComboBox(self) combo.addItems( ["Task {}".format(i) for i in range(1, len(self.TASKS) + 1)]) combo.move(60, 15) combo.activated[str].connect(self.onSelect) self.label = QLabel(self) pixmap = QPixmap('formula{}.png'.format(self.task_number)) self.label.setPixmap(pixmap) self.label.move((self.panelWidth - pixmap.width()) / 2, 50) # self.label.move(0, 100) self.label.setGeometry((self.panelWidth - pixmap.width()) / 2, 50, pixmap.width() + 100, pixmap.height()) label = QLabel(self) label.setGeometry(40, 275, 60, 30) label.setText("left") label.setStyleSheet('color: white') self.left_x_text_field = QLineEdit(self) self.left_x_text_field.setGeometry(40, 300, 60, 30) self.left_x_text_field.setText(str(self.t_left_top.x())) self.left_x_text_field.setValidator(validator) self.left_x_text_field.textChanged.connect(self.update_left_x_field) label = QLabel(self) label.setGeometry(120, 275, 60, 30) label.setText("top") label.setStyleSheet('color: white') self.left_y_text_field = QLineEdit(self) self.left_y_text_field.setGeometry(120, 380, 60, 30) self.left_y_text_field.setText(str(self.t_left_top.y())) self.left_y_text_field.setValidator(validator) self.left_y_text_field.textChanged.connect(self.update_left_y_field) label = QLabel(self) label.setGeometry(40, 355, 60, 30) label.setText("right") label.setStyleSheet('color: white') self.right_x_text_field = QLineEdit(self) self.right_x_text_field.setGeometry(40, 380, 60, 30) self.right_x_text_field.setText(str(self.t_right_bottom.x())) self.right_x_text_field.setValidator(validator) self.right_x_text_field.textChanged.connect(self.update_right_x_field) label = QLabel(self) label.setGeometry(120, 355, 60, 30) label.setText("bottom") label.setStyleSheet('color: white') self.right_y_text_field = QLineEdit(self) self.right_y_text_field.setGeometry(120, 300, 60, 30) self.right_y_text_field.setText(str(self.t_right_bottom.y())) self.right_y_text_field.setValidator(validator) self.right_y_text_field.textChanged.connect(self.update_right_y_field) self.setWindowTitle('Points') self.show()
def add_subscriber(self, full_description: variable_full_description, q_obj_ref): """ Adding subscriber for plc data readout. :param full_description: variable_full_description :param q_obj_ref: QObject - Reference for QObject :return: """ read_subscriber_added_flag = False write_trigger_added_flag = False if isinstance(q_obj_ref, QLabel): data = BaseData(full_description) if q_obj_ref.pixmap() is not None: slot = lambda val: q_obj_ref.setEnabled(bool(val)) else: slot = lambda val: q_obj_ref.setText(str(val)) self.populate_bytes_readout(data) self._visu_variable_list.append(self.visu_object(data, slot)) read_subscriber_added_flag = True elif isinstance(q_obj_ref, QPushButton): if full_description.action in (Action.TOGGLE, Action.RESET, Action.SET): data = WritableBitData(full_description) q_obj_ref.clicked.connect( lambda: self.populate_write_request_by_bit_variable(data)) write_trigger_added_flag = True else: data = BaseData(full_description) if q_obj_ref.isCheckable(): slot = lambda val: self.slot_handling_qpushbutton( q_obj_ref, data, val) self.populate_bytes_readout(data) self._visu_variable_list.append(self.visu_object(data, slot)) read_subscriber_added_flag = True elif isinstance(q_obj_ref, QSlider) or isinstance(q_obj_ref, QDial): data = WritableNumericData(full_description) if full_description.action == Action.WRITE: q_obj_ref.setTracking(False) q_obj_ref.valueChanged.connect( lambda val: self.populate_write_request_by_int_variable( data, val)) write_trigger_added_flag = True slot = lambda val: self.slot_handling_qslider(q_obj_ref, data, val) self.populate_bytes_readout(data) self._visu_variable_list.append(self.visu_object(data, slot)) read_subscriber_added_flag = True elif isinstance(q_obj_ref, QProgressBar): slot = lambda val: q_obj_ref.setValue(int(val)) data = BaseData(full_description) self.populate_bytes_readout(data) self._visu_variable_list.append(self.visu_object(data, slot)) read_subscriber_added_flag = True elif isinstance(q_obj_ref, QLineEdit): if full_description.action == Action.WRITE: data = WritableNumericData(full_description) if data.data_type == DataType.REAL: validator = QDoubleValidator(*data.value_range, 24) locale = QLocale(QLocale.C) locale.setNumberOptions(QLocale.RejectGroupSeparator) validator.setLocale(locale) q_obj_ref.editingFinished.connect( lambda: self.populate_write_request_by_int_variable( data, float(q_obj_ref.text()))) else: validator = DoubleWordValidator(*data.value_range) q_obj_ref.editingFinished.connect( lambda: self.populate_write_request_by_int_variable( data, int(q_obj_ref.text()))) q_obj_ref.setValidator(validator) write_trigger_added_flag = True else: data = BaseData(full_description) q_obj_ref.setReadOnly(True) slot = lambda val: self.slot_handling_qlineedit( q_obj_ref, data, val) self.populate_bytes_readout(data) self._visu_variable_list.append(self.visu_object(data, slot)) read_subscriber_added_flag = True if not (read_subscriber_added_flag or write_trigger_added_flag): logger.warning('No supported widget, or operation for: ' + q_obj_ref.objectName()) else: if read_subscriber_added_flag: logger.debug('Subscriber added for reading: ' + q_obj_ref.objectName()) if write_trigger_added_flag: logger.debug('Added trigger for write operation: ' + q_obj_ref.objectName())