Como te dije con expresiones regulares puedes resolver fácilmente este problema.
Código Python:
Ver originalfrom PyQt4 import QtCore, QtGui
from functools import partial
class Gui(QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
editLayout = QtGui.QFormLayout()
edit = QtGui.QLineEdit()
edit.setMinimumWidth(125)
regex = QtCore.QRegExp("[a-zA-Z]*")
validator = QtGui.QRegExpValidator(regex, edit)
edit.setValidator(validator)
editLayout.addRow("Texto: ", edit)
button=QtGui.QPushButton("Validar")
button.clicked.connect(partial(self.addClientButtonClicked, edit, validator))
layout=QtGui.QVBoxLayout()
layout.addLayout(editLayout)
layout.addWidget(button)
self.setLayout(layout)
def addClientButtonClicked(self, edit, validator):
print edit.text()
state, pos = validator.validate(edit.text(), 0)
print state == QtGui.QValidator.Acceptable, pos
app=QtGui.QApplication([])
g=Gui()
g.show()
app.exec_()
Ejemplo sacado de
aquí.
Ahora tu problema es la vaga definición que tienes de letras, caracteres y números.
1.- Las letras son caracteres
2.- Los caracteres también son letras.
3.- Los números son concepto abstracto, en cambio los dígitos son 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9 (Por lo menos en decimal).
Solo te falta definir bien que es una letra y listo.