Python源码示例:PyQt5.QtGui.QRegExpValidator()
示例1
def __init__(self):
super(UserInfoDialog, self).__init__()
loadUi('./ui/UserInfoDialog.ui', self)
self.setWindowIcon(QIcon('./icons/icon.png'))
self.setFixedSize(425, 300)
# 使用正则表达式限制用户输入
stu_id_regx = QRegExp('^[0-9]{12}$')
stu_id_validator = QRegExpValidator(stu_id_regx, self.stuIDLineEdit)
self.stuIDLineEdit.setValidator(stu_id_validator)
cn_name_regx = QRegExp('^[\u4e00-\u9fa5]{1,10}$')
cn_name_validator = QRegExpValidator(cn_name_regx, self.cnNameLineEdit)
self.cnNameLineEdit.setValidator(cn_name_validator)
en_name_regx = QRegExp('^[ A-Za-z]{1,16}$')
en_name_validator = QRegExpValidator(en_name_regx, self.enNameLineEdit)
self.enNameLineEdit.setValidator(en_name_validator)
示例2
def __init__(self, parent=None):
super(MachineSelector, self).__init__(parent)
box = QtWidgets.QHBoxLayout(self)
label = MonitoringLabel('List of &machines (threads)')
self.is_ready = label.is_ready
self.updated = label.updated
box.addWidget(label)
self._machines = QtWidgets.QLineEdit('all')
self._machines.setToolTip('an integer, \
a comma-separated list of integers, or "all"')
grammar = QRegExp(r'\s*(all|\d+\s*(,\s*\d+\s*)*)\s*')
valid = QtGui.QRegExpValidator(grammar)
self._machines.setValidator(valid)
label.setBuddy(self._machines)
box.addWidget(self._machines)
box.addStretch(1)
self.setLayout(box)
示例3
def __init__(self, min_, max_, float_=False):
super(QwordSpinBox, self).__init__()
self._minimum = min_
self._maximum = max_
self.int_ = float if float_ else int
rx = QRegExp('-?\d{0,20}(?:\.\d{0,20})?' if float_ else '-?\d{0,20}')
validator = QRegExpValidator(rx, self)
self._lineEdit = QLineEdit(self)
self._lineEdit.setText(str(self.int_(0)))
self._lineEdit.setValidator(validator)
self._lineEdit.textEdited.connect(partial(self.setValue, change=False))
self.editingFinished.connect(lambda: self.setValue(self.value(), update=False) or True)
self.setLineEdit(self._lineEdit)
示例4
def at_time(self):
logging.debug('at_time() called')
self.at_time_input = QWidget()
self.at_time_layout = QVBoxLayout(self.at_time_input)
self.time_text = QLabel()
self.time_text.setText(QC.translate('', 'At:'))
self.time_input = QLineEdit()
regexp_validator = QRegExp('^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$')
self.time_validator = QRegExpValidator(regexp_validator)
self.time_input.setValidator(self.time_validator)
self.time_input.setPlaceholderText(QC.translate('', 'hh:mm'))
self.at_time_layout.addWidget(self.time_text)
self.at_time_layout.addWidget(self.time_input)
self.at_time_input.hide()
self.options_box_layout.addWidget(self.at_time_input)
示例5
def __init__(self, checksum_label: ChecksumLabel, message: Message, proto_view: int, parent=None):
super().__init__(parent)
self.ui = Ui_ChecksumOptions()
self.ui.setupUi(self)
self.checksum_label = checksum_label
self.data_range_table_model = self.RangeTableModel(checksum_label, message, proto_view, parent=self)
self.ui.tableViewDataRanges.setItemDelegateForColumn(0, SpinBoxDelegate(1, 999999, self))
self.ui.tableViewDataRanges.setItemDelegateForColumn(1, SpinBoxDelegate(1, 999999, self))
self.ui.tableViewDataRanges.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.ui.tableViewDataRanges.setModel(self.data_range_table_model)
self.ui.tableViewDataRanges.setEditTriggers(QAbstractItemView.AllEditTriggers)
self.display_crc_data_ranges_in_table()
self.ui.comboBoxCRCFunction.addItems([crc_name for crc_name in GenericCRC.DEFAULT_POLYNOMIALS])
self.ui.comboBoxCRCFunction.addItems([special_crc_name for special_crc_name in self.SPECIAL_CRCS])
self.ui.lineEditCRCPolynomial.setValidator(QRegExpValidator(QRegExp("[0-9,a-f]*")))
self.ui.comboBoxCategory.clear()
for _, member in self.checksum_label.Category.__members__.items():
self.ui.comboBoxCategory.addItem(member.value)
self.set_ui_for_category()
self.setFocus()
self.create_connects()
示例6
def validate_data(self, reg_exp, field_name):
field = getattr(self, field_name)
reg_ex = QRegExp(reg_exp)
input_validator = QRegExpValidator(reg_ex, field)
field.setValidator(input_validator)
示例7
def createEditor(self, parent, option, index):
if index.column() < 4:
self.editor = QtWidgets.QComboBox(parent)
self.editor.addItems(self.items[index.column()])
else:
self.editor = QtWidgets.QLineEdit(parent)
regExp = QtCore.QRegExp("[A-Z]{1,3}\\d{1,5}")
validator = QtGui.QRegExpValidator(regExp)
self.editor.setValidator(validator)
return self.editor
示例8
def __init__(self):
super(TelegramBotDialog, self).__init__()
loadUi('./ui/TelegramBotDialog.ui', self)
self.setWindowIcon(QIcon('./icons/icon.png'))
self.setFixedSize(550, 358)
chat_id_regx = QRegExp('^\d+$')
chat_id_validator = QRegExpValidator(chat_id_regx, self.telegramIDLineEdit)
self.telegramIDLineEdit.setValidator(chat_id_validator)
self.okButton.clicked.connect(self.telegramBotSettings)
示例9
def __init__(self, plugin):
super(CreateProjectDialog, self).__init__()
self._plugin = plugin
# General setup of the dialog
self._plugin.logger.debug("Create project dialog")
self.setWindowTitle("Create Project")
icon_path = plugin.plugin_resource("upload.png")
self.setWindowIcon(QIcon(icon_path))
self.resize(100, 100)
# Set up the layout and widgets
layout = QVBoxLayout(self)
self._nameLabel = QLabel("<b>Project Name</b>")
layout.addWidget(self._nameLabel)
self._nameEdit = QLineEdit()
self._nameEdit.setValidator(QRegExpValidator(QRegExp("[a-zA-Z0-9-]+")))
layout.addWidget(self._nameEdit)
buttons = QWidget(self)
buttons_layout = QHBoxLayout(buttons)
create_button = QPushButton("Create")
create_button.clicked.connect(self.accept)
buttons_layout.addWidget(create_button)
cancel_button = QPushButton("Cancel")
cancel_button.clicked.connect(self.reject)
buttons_layout.addWidget(cancel_button)
layout.addWidget(buttons)
示例10
def time_between(self):
logging.debug('time_between() called')
self.time_between_input = QWidget()
self.time_between_layout = QVBoxLayout(self.time_between_input)
self.time_between_txt = QLabel()
self.time_between_txt.setText(QC.translate('', 'Between'))
regexp_validator = QRegExp('^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$')
self.time_validator = QRegExpValidator(regexp_validator)
self.time_row = QWidget()
self.time_row_layout = QHBoxLayout(self.time_row)
self.start_time_input = QLineEdit()
self.start_time_input.setValidator(self.time_validator)
self.start_time_input.setPlaceholderText(QC.translate('', 'hh:mm (default 00:00)'))
self.and_text = QLabel()
self.and_text.setText(QC.translate('', 'and'))
self.stop_time_input = QLineEdit()
self.stop_time_input.setValidator(self.time_validator)
self.stop_time_input.setPlaceholderText(QC.translate('', 'hh:mm (default 00:00)'))
self.time_row_layout.addWidget(self.start_time_input)
self.time_row_layout.addWidget(self.and_text)
self.time_row_layout.addWidget(self.stop_time_input)
self.time_between_layout.addWidget(self.time_between_txt)
self.time_between_layout.addWidget(self.time_row)
self.time_between_input.hide()
self.options_box_layout.addWidget(self.time_between_input)
示例11
def set_re_float(line_edit):
line_edit.setValidator(QRegExpValidator(QRegExp('^\d*\.?\d+$'), line_edit))
# TODO: add regex also for asset id
示例12
def __init__(self,parent = None, aw = None, values = [0,0]):
super(pointDlg,self).__init__(parent, aw)
self.values = values
self.setWindowTitle(QApplication.translate("Form Caption","Add Point",None))
self.tempEdit = QLineEdit(str(int(round(self.values[1]))))
self.tempEdit.setValidator(QIntValidator(0, 999, self.tempEdit))
self.tempEdit.setFocus()
self.tempEdit.setAlignment(Qt.AlignRight)
templabel = QLabel(QApplication.translate("Label", "temp",None))
regextime = QRegExp(r"^-?[0-9]?[0-9]?[0-9]:[0-5][0-9]$")
self.timeEdit = QLineEdit(stringfromseconds(self.values[0],leadingzero=False))
self.timeEdit.setAlignment(Qt.AlignRight)
self.timeEdit.setValidator(QRegExpValidator(regextime,self))
timelabel = QLabel(QApplication.translate("Label", "time",None))
# connect the ArtisanDialog standard OK/Cancel buttons
self.dialogbuttons.accepted.connect(self.return_values)
self.dialogbuttons.rejected.connect(self.reject)
buttonLayout = QHBoxLayout()
buttonLayout.addStretch()
buttonLayout.addWidget(self.dialogbuttons)
grid = QGridLayout()
grid.addWidget(timelabel,0,0)
grid.addWidget(self.timeEdit,0,1)
grid.addWidget(templabel,1,0)
grid.addWidget(self.tempEdit,1,1)
mainLayout = QVBoxLayout()
mainLayout.addLayout(grid)
mainLayout.addStretch()
mainLayout.addLayout(buttonLayout)
self.setLayout(mainLayout)
self.dialogbuttons.button(QDialogButtonBox.Ok).setFocus()
示例13
def createsegmenttable(self):
self.segmenttable.setRowCount(8)
self.segmenttable.setColumnCount(4)
self.segmenttable.setHorizontalHeaderLabels([QApplication.translate("Table","SV",None),
QApplication.translate("Table","Ramp HH:MM",None),
QApplication.translate("Table","Soak HH:MM",None),""])
self.segmenttable.setEditTriggers(QTableWidget.NoEditTriggers)
self.segmenttable.setSelectionBehavior(QTableWidget.SelectRows)
self.segmenttable.setSelectionMode(QTableWidget.SingleSelection)
self.segmenttable.setShowGrid(True)
self.segmenttable.verticalHeader().setSectionResizeMode(2)
regextime = QRegExp(r"^-?[0-9]?[0-9]?[0-9]:[0-5][0-9]$")
#populate table
for i in range(8):
#create widgets
svkey = "segment" + str(i+1) + "sv"
rampkey = "segment" + str(i+1) + "ramp"
soakkey = "segment" + str(i+1) + "soak"
svedit = QLineEdit(str(self.aw.fujipid.PXR[svkey][0]))
svedit.setValidator(self.aw.createCLocaleDoubleValidator(0., 999., 1, svedit))
rampedit = QLineEdit(stringfromseconds(self.aw.fujipid.PXR[rampkey][0]))
rampedit.setValidator(QRegExpValidator(regextime,self))
soakedit = QLineEdit(stringfromseconds(self.aw.fujipid.PXR[soakkey][0]))
soakedit.setValidator(QRegExpValidator(regextime,self))
setButton = QPushButton(QApplication.translate("Button","Set",None))
setButton.clicked.connect(self.setsegment)
setButton.setFocusPolicy(Qt.NoFocus)
#add widgets to the table
self.segmenttable.setCellWidget(i,0,svedit)
self.segmenttable.setCellWidget(i,1,rampedit)
self.segmenttable.setCellWidget(i,2,soakedit)
self.segmenttable.setCellWidget(i,3,setButton)
#idn = id number, sv = float set value, ramp = ramp value, soak = soak value
示例14
def createsegmenttable(self):
self.segmenttable.setRowCount(16)
self.segmenttable.setColumnCount(4)
self.segmenttable.setHorizontalHeaderLabels([QApplication.translate("StatusBar","SV",None),
QApplication.translate("StatusBar","Ramp (MM:SS)",None),
QApplication.translate("StatusBar","Soak (MM:SS)",None),""])
self.segmenttable.setEditTriggers(QTableWidget.NoEditTriggers)
self.segmenttable.setSelectionBehavior(QTableWidget.SelectRows)
self.segmenttable.setSelectionMode(QTableWidget.SingleSelection)
self.segmenttable.setShowGrid(True)
self.segmenttable.verticalHeader().setSectionResizeMode(2)
regextime = QRegExp(r"^-?[0-9]?[0-9]?[0-9]:[0-5][0-9]$")
#populate table
for i in range(16):
#create widgets
svkey = "segment" + str(i+1) + "sv"
rampkey = "segment" + str(i+1) + "ramp"
soakkey = "segment" + str(i+1) + "soak"
svedit = QLineEdit(str(self.aw.fujipid.PXG4[svkey][0]))
svedit.setValidator(self.aw.createCLocaleDoubleValidator(0., 999., 1, svedit))
rampedit = QLineEdit(stringfromseconds(self.aw.fujipid.PXG4[rampkey][0]))
rampedit.setValidator(QRegExpValidator(regextime,self))
soakedit = QLineEdit(stringfromseconds(self.aw.fujipid.PXG4[soakkey][0]))
soakedit.setValidator(QRegExpValidator(regextime,self))
setButton = QPushButton(QApplication.translate("Button","Set",None))
setButton.setFocusPolicy(Qt.NoFocus)
setButton.clicked.connect(self.setsegment)
#add widgets to the table
self.segmenttable.setCellWidget(i,0,svedit)
self.segmenttable.setCellWidget(i,1,rampedit)
self.segmenttable.setCellWidget(i,2,soakedit)
self.segmenttable.setCellWidget(i,3,setButton)
#idn = id number, sv = float set value, ramp = ramp value, soak = soak value
示例15
def update_modulation_parameters(self):
n = len(self.current_modulator.parameters) - 1
if self.current_modulator.is_amplitude_based:
regex = r"(100|[0-9]{1,2})"
elif self.current_modulator.is_frequency_based:
regex = r"((-?[0-9]+)[.,]?[0-9]*[kKmMgG]?)"
elif self.current_modulator.is_phase_based:
regex = r"(-?(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9]))"
else:
raise ValueError("Unknown modulation type")
full_regex = r"^(" + regex + r"/){" + str(n) + "}" + regex + r"$"
self.ui.lineEditParameters.setValidator(QRegExpValidator(QRegExp(full_regex)))
self.ui.lineEditParameters.setText(self.current_modulator.parameters_string)
示例16
def __init__(self, project_manager: ProjectManager, is_tx: bool, backend_handler: BackendHandler = None,
continuous_send_mode=False, parent=None):
super().__init__(parent)
self.ui = Ui_FormDeviceSettings()
self.ui.setupUi(self)
self.__device = None # type: VirtualDevice
self.is_tx = is_tx
self.is_rx = not is_tx
if backend_handler is None:
self.backend_handler = BackendHandler()
else:
self.backend_handler = backend_handler
if self.is_rx:
self.ui.spinBoxNRepeat.hide()
self.ui.labelNRepeat.hide()
else:
self.ui.labelDCCorrection.hide()
self.ui.checkBoxDCCorrection.hide()
self.bw_sr_are_locked = settings.read("lock_bandwidth_sample_rate", True, bool)
self.ui.cbDevice.clear()
items = self.get_devices_for_combobox(continuous_send_mode)
self.ui.cbDevice.addItems(items)
self.bootstrap(project_manager.device_conf, enforce_default=True)
self.ui.btnLockBWSR.setChecked(self.bw_sr_are_locked)
self.on_btn_lock_bw_sr_clicked()
ip_range = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])"
ip_regex = QRegExp("^" + ip_range
+ "\\." + ip_range
+ "\\." + ip_range
+ "\\." + ip_range + "$")
self.ui.lineEditIP.setValidator(QRegExpValidator(ip_regex))
self.create_connects()
self.sync_gain_sliders()
示例17
def __init__(self, *args):
QAbstractSpinBox.__init__(self, *args)
regexp = QtCore.QRegExp('^0x[0-9A-Fa-f]{1,10}$')
self.validator = QtGui.QRegExpValidator(regexp)
self._value = 0
示例18
def hexeditor(self):
self.dialogbox = widgets.QWidget()
wlayout = widgets.QVBoxLayout()
diaglabel = widgets.QLabel(_("Diagnostic session"))
inputlabel = widgets.QLabel(_("Input"))
outputlabel = widgets.QLabel(_("Output"))
diaglabel.setAlignment(core.Qt.AlignCenter)
inputlabel.setAlignment(core.Qt.AlignCenter)
outputlabel.setAlignment(core.Qt.AlignCenter)
self.diagsession = widgets.QComboBox()
rqsts = self.ecurequestsparser.requests.keys()
self.request_editor_sds = {}
self.diagsession.addItem(u"None")
self.request_editor_sds[u'None'] = ""
for diag in rqsts:
if "start" in diag.lower() and "session" in diag.lower() and 'diag' in diag.lower():
sds = self.ecurequestsparser.requests[diag]
if u'Session Name' in sds.sendbyte_dataitems:
session_names = self.ecurequestsparser.data[u'Session Name']
for name in session_names.items.keys():
sds_stream = " ".join(sds.build_data_stream({u'Session Name': name}))
name = name + "[" + sds_stream + "]"
self.request_editor_sds[name] = sds_stream
self.diagsession.addItem(name)
print sds.sendbyte_dataitems[u'Session Name']
if len(self.request_editor_sds) == 1:
for k, v in self.sds.iteritems():
self.diagsession.addItem(k)
self.request_editor_sds[k] = v
self.input = widgets.QLineEdit()
self.input.returnPressed.connect(self.send_manual_cmd)
self.output = widgets.QLineEdit()
self.output.setReadOnly(True)
hexvalidaor = core.QRegExp(("^[\s0-9a-fA-F]+"))
rev = gui.QRegExpValidator(hexvalidaor, self)
self.input.setValidator(rev)
wlayout.addWidget(diaglabel)
wlayout.addWidget(self.diagsession)
wlayout.addWidget(inputlabel)
wlayout.addWidget(self.input)
wlayout.addWidget(outputlabel)
wlayout.addWidget(self.output)
self.dialogbox.setLayout(wlayout)
self.dialogbox.show()
示例19
def initUI(self):
# =================== WIDGET QLINEEDIT =====================
self.lineEdit = QLineEdit(self)
# ================== FUNCIONES PÚBLICAS ==================
self.lineEdit.setGeometry(20, 20, 360, 24)
self.lineEdit.setText("Andres Niño")
# self.lineEdit.setAlignment(Qt.AlignLeft)
# self.lineEdit.setClearButtonEnabled(True)
# self.lineEdit.setCursorPosition(6)
# self.lineEdit.home(True)
# self.lineEdit.end(True)
# self.lineEdit.setEchoMode(QLineEdit.Password)
# self.lineEdit.setFrame(False)
# self.lineEdit.setMaxLength(2)
# self.lineEdit.setPlaceholderText("Andres Niño")
# self.lineEdit.setReadOnly(True)
# self.lineEdit.setSelection(3, 2)
# self.lineEdit.selectAll()
# self.lineEdit.deselect()
# self.lineEdit.setTextMargins(10, 0, 6, 1)
# self.lineEdit.setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#")
# self.lineEdit.setValidator(QRegExpValidator(QRegExp("[0-9]+")))
# print(self.lineEdit.text())
fuente = QFont()
fuente.setPointSize(10)
fuente.setCapitalization(QFont.Capitalize)
self.lineEdit.setFont(fuente)
# ======================= SEÑALES ========================
# self.lineEdit.returnPressed.connect(lambda: print("Se presiono la tecla Enter..."))
# self.lineEdit.textChanged.connect(lambda: print("El texto cambio..."))
# self.lineEdit.textEdited.connect(lambda: print("El texto cambio..."))
# ================================================================
示例20
def __init__(self, new_project=True, project_manager: ProjectManager = None, parent=None):
super().__init__(parent)
if not new_project:
assert project_manager is not None
self.ui = Ui_ProjectDialog()
self.ui.setupUi(self)
self.setWindowFlags(Qt.Window)
if new_project:
self.participant_table_model = ParticipantTableModel([])
else:
self.participant_table_model = ParticipantTableModel(project_manager.participants)
self.ui.spinBoxSampleRate.setValue(project_manager.device_conf["sample_rate"])
self.ui.spinBoxFreq.setValue(project_manager.device_conf["frequency"])
self.ui.spinBoxBandwidth.setValue(project_manager.device_conf["bandwidth"])
self.ui.spinBoxGain.setValue(project_manager.device_conf.get("gain", config.DEFAULT_GAIN))
self.ui.txtEdDescription.setPlainText(project_manager.description)
self.ui.lineEdit_Path.setText(project_manager.project_path)
self.ui.lineEditBroadcastAddress.setText(project_manager.broadcast_address_hex)
self.ui.btnSelectPath.hide()
self.ui.lineEdit_Path.setDisabled(True)
self.setWindowTitle("Edit project settings")
self.ui.lNewProject.setText("Edit project")
self.ui.tblParticipants.setModel(self.participant_table_model)
self.participant_table_model.update()
self.ui.lineEditBroadcastAddress.setValidator(QRegExpValidator(QRegExp("([a-fA-F ]|[0-9]){,}")))
self.sample_rate = self.ui.spinBoxSampleRate.value()
self.freq = self.ui.spinBoxFreq.value()
self.bandwidth = self.ui.spinBoxBandwidth.value()
self.gain = self.ui.spinBoxGain.value()
self.description = self.ui.txtEdDescription.toPlainText()
self.broadcast_address_hex = self.ui.lineEditBroadcastAddress.text()
self.path = self.ui.lineEdit_Path.text()
self.new_project = new_project
self.committed = False
self.setModal(True)
completer = QCompleter()
completer.setModel(QDirModel(completer))
self.ui.lineEdit_Path.setCompleter(completer)
self.create_connects()
# add two participants
if self.participant_table_model.rowCount() == 0 and new_project:
self.ui.btnAddParticipant.click()
self.ui.btnAddParticipant.click()
if new_project:
self.ui.lineEdit_Path.setText(os.path.realpath(os.path.join(os.curdir, "new")))
self.on_line_edit_path_text_edited()
self.restoreGeometry(settings.read("{}/geometry".format(self.__class__.__name__), type=bytes))