2013-04-05 3 views
6

У меня есть QLineEdit, и я хочу ограничить QLineEdit, чтобы принимать только целые числа. Он должен работать как inputmask. Но я не хочу использовать inputmask, потому что если пользователь нажимает на QLineEdit, курсор будет находиться в том месте, где была нажата мышь. и пользователю необходимо перейти в 0 позицию и ввести то, что ему нужно.Как ограничить ввод пользователя в QLineEdit в pyqt

Есть ли альтернатива для этого.

ответ

7

вы можете использовать обработку исключений для проверки этого:

number = self.ui.number_lineEdit.text() 
try: 
    number = int(number) 
except Exception: 
    QtGui.QMessageBox.about(self, 'Error','Input can only be a number') 
    pass 

вы также можете использовать validators для проверки входных строк.

+0

я слышал о 'validators', но не получил найти правильный пример того, как установить его на' QLineEdit'. В то время как я попробую ваш аскетизм. Я считаю, что Валидаторы - хорошие варианты профессионального подхода. – Rao

+0

попробуйте изучить этот вопрос здесь http://stackoverflow.com/questions/5770441/checking-qvalidators-state – scottydelta

+2

Хороший пример использования валидаторов находится здесь: http://snorf.net/blog/2014/08/ 09/using-qvalidator-in-pyqt4-to-validate-user-input/ – maurobio

3

вы можете использовать QValidator он работает как:

#To allow only int 
self.onlyInt = QIntValidator() 
self.LineEdit.setValidator(self.onlyInt) 
Смежные вопросы