在单行文本框中,利用验证器QIntValidator来限定文本框的输入内容。
1.创建窗口及子控件
1、①导入模块,创建应用程序对象;②自定义类继承自QWidget, 创建窗口并展示。
2、给顶层窗口添加子控件,并初始化位置。
2.验证器类QValidator
1、单行文本框使用函数:setValidator猾诮沓靥(QValidator)来设置验证器。文本框中输入内容时;首先会将内容传递给验证器 QValidator 进行验证。----①参数QV锾攒揉敫alidator是个验证器类对象。----②QValidator类是个抽象类,所以是不能直接实例化;----③在给setValidator函数传入参数前必须要先定义一个子类来继承QValidator,才能实例化对象。
3.子类化QValidator
1、自定义一个类,继承自QValidator类。并实例一个对象作为setValidator的参数。
2、重写QValidator类的方法。validate(self巳呀屋饔, str, int)①当执行setValidator(QValidator)后,QValidator实例对象会实时监听文本框,并把每输入文本框的字母和字母的位置,作为参数传递给validate方法中的str,和int。②参数str,是单行文本框输入的字符串,③参数int,是光标在字符串中的位置。它返回一个有三个元素的元组,有三种情况;Acceptable = 2 ;验证通过Intermediate = 1;暂不做验证;Invalid = 0 ;验证不通过。例如:第一种情况,;QValidator.Acceptable=2return (QValidator.Acceptable , str , int);
3.应用举例-限定整数范围
1、例如:控制文本框中仅输入2000-2019之间的整数。可以给函数添加逻辑判断,来控制返回值。但由于QValidator是实时监听文本框的改变,所以并不能一次显示所有输入。
2、可加入第二种返回情况的逻辑判断。即暂不做验证。
3、重写QValidator的fixup(str)方法。可以在切换焦点后,直接修改不合规则的字符串。参数str是经过validate()方法验证后的字符串;,
4、但这仍不能避免输入非整数字符时报错;可以使用try语句直接避错。