Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2014 05:59:12

mitya_s_v
Зарегистрирован: 2014-09-10
Сообщения: 64
Репутация: +  4  -
Профиль   Отправить e-mail  

Проблемы с QIntValidator

Хочу разрешить в поле вводить только цифры, попробовал использовать QIntValidator и почему-то у меня ничего не получается. Если создавать экземпляр класса без аргументов, то все нормально фильтруется, но можно ввести только 10 символов. Если делаю вот так:

lineEdit.setValidator(QtGui.QIntValidator(0, 20))
то у меня поле блокируется, нельзя ввести ничего и нельзя удалить ничего из поля (у меня в поле при открытие окна из файла значение по умолчанию загружается).

Офлайн

#2 Дек. 25, 2014 10:21:18

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Проблемы с QIntValidator

QtGui.QIntValidator(минимальное_число, максимальное_число)
а не количество символов!
вот как вариант:
lineEdit.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp(r'\d*'), self))



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Дек. 25, 2014 11:01:07

mitya_s_v
Зарегистрирован: 2014-09-10
Сообщения: 64
Репутация: +  4  -
Профиль   Отправить e-mail  

Проблемы с QIntValidator

terabayt
Аааа, вон оно чего, а я то думал, что задаётся количество символов. Ну тогда все просто. Спасибо, снова выручили)

Офлайн

#4 Дек. 25, 2014 11:13:21

mitya_s_v
Зарегистрирован: 2014-09-10
Сообщения: 64
Репутация: +  4  -
Профиль   Отправить e-mail  

Проблемы с QIntValidator

terabayt
Кстати, вы не знаете почему регулярка типа \d{0, 15} не работает?

Офлайн

#5 Дек. 25, 2014 19:14:30

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Проблемы с QIntValidator

у меня работает

lineEdit.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp(r'\d{0,15}'), self))



————————————————
-*- Simple is better than complex -*-

Офлайн

#6 Дек. 25, 2014 19:49:45

mitya_s_v
Зарегистрирован: 2014-09-10
Сообщения: 64
Репутация: +  4  -
Профиль   Отправить e-mail  

Проблемы с QIntValidator

terabayt
У меня в поле ничего не вводится

Офлайн

#7 Дек. 25, 2014 20:30:02

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Проблемы с QIntValidator

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()



————————————————
-*- Simple is better than complex -*-

Офлайн

#8 Дек. 25, 2014 21:03:44

mitya_s_v
Зарегистрирован: 2014-09-10
Сообщения: 64
Репутация: +  4  -
Профиль   Отправить e-mail  

Проблемы с QIntValidator

terabayt
Сейчас перепроверил и регулярку ввёл повторно, все заработало магическим образом. Руки кривые похоже.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version