[PyQt4] QValidator Frage
Verfasst: Donnerstag 6. Dezember 2012, 11:04
Hallo
Ich hab einen kleinen Dialog, mit welchem ich aus einer Datenbank (sqlite) selects und inserts mache. Nun möchte ich aber die Eingabe validieren, damit ich je nach Feld nur Zahlen eingeben kann und jedes Feld muss auch befüllt werden. Dass ein Feld nur Zahlen annimmt habe ich bereits hinbekommen. Wie ich aber das Übermitteln von leeren Feldern vermeiden kann, weiss ich (noch) nicht. Leider werde ich aus der Doku nicht wirklich schlau.
Hier mal der Code:
Die Frage ist eben, wie ich eine Eingabe erzwingen kann und eventuell auch Sonderzeichen verbieten kann.
mfg
Ich hab einen kleinen Dialog, mit welchem ich aus einer Datenbank (sqlite) selects und inserts mache. Nun möchte ich aber die Eingabe validieren, damit ich je nach Feld nur Zahlen eingeben kann und jedes Feld muss auch befüllt werden. Dass ein Feld nur Zahlen annimmt habe ich bereits hinbekommen. Wie ich aber das Übermitteln von leeren Feldern vermeiden kann, weiss ich (noch) nicht. Leider werde ich aus der Doku nicht wirklich schlau.
Hier mal der Code:
Code: Alles auswählen
class MeinDialog(QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
# UI Datei wird geladen
self.ui = uic.loadUi("anzeige.ui", self)
# Slots einrichten
self.ui.buttonNext.clicked.connect(self.onNext)
self.ui.buttonBack.clicked.connect(self.onBack)
self.ui.buttonInsert.clicked.connect(self.onInsert)
self.ui.linePlz.setValidator(QtGui.QIntValidator(self.linePlz))
def onNext(self):
query.next()
id = query.value(0).toInt()[0]
name = unicode(query.value(1).toString())
vorname = unicode(query.value(2).toString())
strasse = unicode(query.value(3).toString())
plz = query.value(4).toInt()[0]
ort = unicode(query.value(5).toString())
#Zuweisung Textfelder
self.ui.lineID.setText(str(id))
self.ui.lineName.setText(name)
self.ui.lineVorname.setText(vorname)
self.ui.lineStrasse.setText(strasse)
self.ui.linePlz.setText(str(plz))
self.ui.lineOrt.setText(ort)
print id, name, vorname, strasse, plz, ort
def onBack(self):
query.previous()
id = query.value(0).toInt()[0]
name = unicode(query.value(1).toString())
vorname = unicode(query.value(2).toString())
strasse = unicode(query.value(3).toString())
plz = query.value(4).toInt()[0]
ort = unicode(query.value(5).toString())
#Zuweisung Textfelder
self.ui.lineID.setText(str(id))
self.ui.lineName.setText(name)
self.ui.lineVorname.setText(vorname)
self.ui.lineStrasse.setText(strasse)
self.ui.linePlz.setText(str(plz))
self.ui.lineOrt.setText(ort)
print id, name, vorname, strasse, plz, ort
def onInsert(self):
name = self.ui.lineName.text()
vorname = self.ui.lineVorname.text()
strasse = self.ui.lineStrasse.text()
ort = self.ui.lineOrt.text()
plz = self.ui.linePlz.text()
#self.linePlz.setValidator(QtGui.QIntValidator(self.linePlz))
#SQL Insert
query.prepare("INSERT INTO mannschaft (name, vorname, strasse,plz,ort) "
"VALUES (?,?,?,?,?)")
#Wertezuweisung
query.addBindValue(name)
query.addBindValue(vorname)
query.addBindValue(strasse)
query.addBindValue(plz)
query.addBindValue(ort)
query.exec_()
mfg