我正在将我的 PyQt 代码与我的 PostgreSQL 链接起来,在 PostgreSQL 中我将某些列设置为 NUMERIC(11,0) 类型,但现在我想将其限制为正好 11 位数字,因为 NUMERIC( 11,0) 表示最多 11 位。
class kirurg_GUI(QtGui.QWidget, Ui_kirurg_Widget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setupUi(self)
self.kirurg_Add_button.clicked.connect(self.insert_kirurg)
def insert_kirurg(self):
oib_kir = self.kirurg_oib_kir_lineEdit.text()
if not oib_kir:
QtGui.QMessageBox.critical(self, 'Query error', 'oib_kir must not be empty')
else:
query = QSqlQuery()
status = query.exec("INSERT INTO kirurg (oib_kir, prezime, ime, adresa, broj_telefona)"
"VALUES ('%s', '%s', '%s', '%s', '%s')" % (''.join(self.kirurg_oib_kir_lineEdit.text()),
''.join(self.kirurg_prezime_lineEdit.text()),
''.join(self.kirurg_ime_lineEdit.text()),
''.join(self.kirurg_adresa_lineEdit.text()),
''.join(self.kirurg_broj_telefona_lineEdit.text())))
if status is not True:
errorText = query.lastError().text()
QtGui.QMessageBox.critical(self, 'Query error', errorText)
else:
msgBox = QtGui.QMessageBox()
msgBox.setWindowTitle("Kirurg")
msgBox.setText("Data entered successfully")
msgBox.exec_()
kirurg.close()
这是我在我的数据库中添加值的部分代码。
这一行:
''.join(self.kirurg_oib_kir_lineEdit.text()
的长度应恰好为 11 位数字。我已经涵盖了最大大小和数字类型,但现在我想将其限制为确切的位数。
谢谢!
最佳答案
您可以使用 QLineEdit.setInputMask (self, QString inputMask)
只设置号码。阅读here配置它们。
class kirurg_GUI (QtGui.QWidget, Ui_kirurg_Widget):
def __init__ (self):
QtGui.QWidget.__init__(self)
self.setupUi(self)
self.kirurg_Add_button.clicked.connect(self.insert_kirurg)
maxLength = 11 # <- Add length
self.kirurg_oib_kir_lineEdit.setInputMask(('9' * maxLength) + ';_') # <- Set input mask
self.kirurg_oib_kir_lineEdit.setMaxLength(maxLength) # <- Set max length
def insert_kirurg (self):
oib_kir = self.kirurg_oib_kir_lineEdit.text()
if not oib_kir:
QtGui.QMessageBox.critical(self, 'Query error', 'oib_kir must not be empty')
if len(str(oib_kir)) != self.kirurg_oib_kir_lineEdit.maxLength(): # Check digit length
QtGui.QMessageBox.critical(self, 'Query error', 'oib_kir must not be 11 diget') # Not 11 digit ? Error!
else:
query = QSqlQuery()
status = query.exec("INSERT INTO kirurg (oib_kir, prezime, ime, adresa, broj_telefona)"
"VALUES ('%s', '%s', '%s', '%s', '%s')" % (''.join(self.kirurg_oib_kir_lineEdit.text()),
''.join(self.kirurg_prezime_lineEdit.text()),
''.join(self.kirurg_ime_lineEdit.text()),
''.join(self.kirurg_adresa_lineEdit.text()),
''.join(self.kirurg_broj_telefona_lineEdit.text())))
if status is not True:
errorText = query.lastError().text()
QtGui.QMessageBox.critical(self, 'Query error', errorText)
else:
msgBox = QtGui.QMessageBox()
msgBox.setWindowTitle("Kirurg")
msgBox.setText("Data entered successfully")
msgBox.exec_()
kirurg.close()
关于postgresql - PyQt,如何检查数字数组是否具有特定长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25690412/