老师原课件下载地址:
有积分的朋友,支持下我,打赏也OK。
不下载也可以,我每节课会吧代码贴出来
视频链接
课程重点
现在QLineEdit控件的输入(校验器)
如限制只能输入整数、浮点数或满足一定条件的字符串
代码位置
完整代码
'''
现在QLineEdit控件的输入(校验器)
如限制只能输入整数、浮点数或满足一定条件的字符串
'''
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIntValidator,QDoubleValidator, QRegExpValidator
from PyQt5.QtCore import QRegExp
import sys
class QLineEditValidator(QWidget):
def __init__(self):
super(QLineEditValidator,self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('校验器')
# 创建表单布局
formLayout = QFormLayout()
intLineEdit = QLineEdit()
doubleLineEdit = QLineEdit()
validatorLineEdit = QLineEdit()
formLayout.addRow('整数类型', intLineEdit)
formLayout.addRow('浮点类型', doubleLineEdit)
formLayout.addRow('数字和字母',validatorLineEdit)
intLineEdit.setPlaceholderText('整型')
doubleLineEdit.setPlaceholderText('浮点型')
validatorLineEdit.setPlaceholderText('字母和数字')
# 整数校验器 [1,99]
intValidator = QIntValidator(self)
intValidator.setRange(1,99)
# 浮点校验器 [-360,360],精度:小数点后2位
doubleValidator = QDoubleValidator(self)
doubleValidator.setRange(-360,360)
doubleValidator.setNotation(QDoubleValidator.StandardNotation)
# 设置精度,小数点2位
doubleValidator.setDecimals(2)
# 字符和数字
reg = QRegExp('[a-zA-z0-9]+$')
validator = QRegExpValidator(self)
validator.setRegExp(reg)
# 设置校验器
intLineEdit.setValidator(intValidator)
doubleLineEdit.setValidator(doubleValidator)
validatorLineEdit.setValidator(validator)
self.setLayout(formLayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = QLineEditValidator()
main.show()
sys.exit(app.exec_())
遇到的问题
老师的日常翻车,视频里出现了正则表达式没写对,导致的格式问题。
这里setRange,无论是整数还是小数,貌似都没什么用处
改写效果展示
改写注意点
self.setWindowTitle(‘校验器’)
formLayout = QFormLayout()
把标签拖到formlayout里
具体操作不讲了,上一节课已经完成了
全部设置好
功能方面的设置,大部分是需要从py里面设置的,我从qt designer里面没有找到对应的功能
改写代码(QTdesigner模式)
# -*- coding:utf-8 -*-
'''
@Author: knocky
@Blog: https://blog.csdn.net/zzx188891020
@E-mail: 188891020@qq.com
@File: class32.py
@CreateTime: 2020/5/8 17:19
'''
import sys
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5 import uic
from PyQt5.QtGui import QIntValidator,QDoubleValidator, QRegExpValidator
from PyQt5.QtCore import QRegExp
class my_form(QWidget) :
def __init__(self):
super().__init__()
self.ui = uic.loadUi("../ui_package/class33.ui")
self.settings()
def settings(self):
# 整数校验器 [1,99]
intValidator = QIntValidator(self)
intValidator.setRange(1,99)
# 浮点校验器 [-360,360],精度:小数点后2位
doubleValidator = QDoubleValidator(self)
doubleValidator.setRange(-360,360)
doubleValidator.setNotation(QDoubleValidator.StandardNotation)
# 设置精度,小数点2位
doubleValidator.setDecimals(2)
# 字符和数字
reg = QRegExp('[a-zA-Z0-9]+$')
validator = QRegExpValidator(self)
validator.setRegExp(reg)
# 设置校验器
self.ui.lineEdit.setValidator(intValidator)
self.ui.lineEdit_2.setValidator(doubleValidator)
self.ui.lineEdit_3.setValidator(validator)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = my_form()
main.ui.show()
sys.exit(app.exec_())