Форум сайта python.su
Хочу разрешить в поле вводить только цифры, попробовал использовать QIntValidator и почему-то у меня ничего не получается. Если создавать экземпляр класса без аргументов, то все нормально фильтруется, но можно ввести только 10 символов. Если делаю вот так:
lineEdit.setValidator(QtGui.QIntValidator(0, 20))
Офлайн
QtGui.QIntValidator(минимальное_число, максимальное_число)
lineEdit.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp(r'\d*'), self))
Офлайн
terabayt
Аааа, вон оно чего, а я то думал, что задаётся количество символов. Ну тогда все просто. Спасибо, снова выручили)
Офлайн
terabayt
Кстати, вы не знаете почему регулярка типа \d{0, 15} не работает?
Офлайн
у меня работает
lineEdit.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp(r'\d{0,15}'), self))
Офлайн
terabayt
У меня в поле ничего не вводится
Офлайн
mitya_s_vдавайте код, посмотрим
У меня в поле ничего не вводится
# -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, QtCore class Example(QtGui.QWidget): def __init__(self): super(Example, self).__init__() self.initUI() def initUI(self): lineEdit = QtGui.QLineEdit(self) lineEdit.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp(r'\d{0,15}'), self)) lineEdit.move(60, 100) self.setGeometry(300, 300, 280, 170) self.setWindowTitle('Test') self.show() def main(): app = QtGui.QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) if __name__ == '__main__': main()
Офлайн
terabayt
Сейчас перепроверил и регулярку ввёл повторно, все заработало магическим образом. Руки кривые похоже.
Офлайн