QLineEdit 简介
QLineEdit是一个单行文本输入控件,可输入单行的文本字符串,这里输入常见的情况有
- 普通文本,比如用户登录名,文件保存路径等;
- 数字,整数或者浮点数;
- 密码输入;
- 日期输入;
- EMail地址;
- IP地址;
- MAC地址;
- 许可证号;
- 其他单行输入。
QLineEdit中常用方法:
- setAlignment():按规定的方式对齐文本;
- clear(): 清除文本框内容;
- setEchoMode():设置文本框的显示格式;
- setPlaceholdertext():设置文本框浮现的文字;
- setMaxLength():设置文本框允许输入的最大字符数;
- setReadOnly(): 设置文本框为只读;
- setText(): 设置文本框的内容;
- setDragEnable():设置文本框是否接受拖动;
- selectAll(): 选择所有文本;
- setFocus(): 获得焦点;
- setInputMask(): 设置掩码;
- setValidator(): 设置文本框的验证器(验证规则),限制文本框可输入内容。
QLineEdit类中常用信号:
- selectionChanged(): 文本选择发生改变,发射该信号;
- textChanged();当修改文本内容时,发射发射该信号;
- editingFinished() ; 当文本编辑结束时,该信号。
QLineEdit类继承关系:
测试QLineEdit
创建文件qlineedit.py, 代码如下:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QMainWindow, QLabel, QLineEdit)
#文本校验器:整数校验器,浮点数校验器,正则表达式校验器
from PyQt5.QtGui import QIntValidator,QDoubleValidator,QRegExpValidator
#正则表达式
from PyQt5.QtCore import QRegExp
class DemoLineEdit(QMainWindow):
def __init__(self, parent=None):
super(DemoLineEdit, self).__init__(parent)
#设置窗口标题
self.setWindowTitle("实战PyQt5: QLineEdit Demo!")
#设置窗口大小
self.resize(400, 300)
self.user_name() #用户
self.password() #密码
self.int_edit() #整数
self.double_edit() #浮点数
self.email_edit() #使用正则表达式实现输入Email
#== 掩码测试
self.mask_ip() #IP 地址
self.mask_mac() #MAC 地址掩码
self.mask_date() #日期掩码
self.mask_license() #许可证掩码
def user_name(self):
#标题
label_username = QLabel('用户名:', self)
label_username.setAlignment(Qt.AlignRight)
label_username.setGeometry(10, 10, 120, 24)
#输入
le_username = QLineEdit(self)
le_username.setGeometry(140, 10, 200, 24)
def password(self):
#标题
label_password = QLabel('密码:', self)
label_password.setAlignment(Qt.AlignRight)
label_password.setGeometry(10, 40, 120, 24)
#输入
le_password = QLineEdit(self)
le_password.setEchoMode(QLineEdit.Password) #输入显示为圆点
le_password.setGeometry(140, 40, 200, 24)
def int_edit(self):
#标题
label_intEdit = QLabel(self)
label_intEdit.setText("整数(-199~200):")
label_intEdit.setAlignment(Qt.AlignRight)
label_intEdit.setGeometry(10, 70, 120, 24)
#整数验证器
intValidator = QIntValidator(self)
intValidator.setRange(-199, 200) #限制范围(-199~200)
#输入
le_intEdit = QLineEdit(self)
le_intEdit.setValidator(intValidator)
le_intEdit.move(140, 70)
le_intEdit.resize(200, 24)
def double_edit(self):
#标题
label_doubleEdit = QLabel(self)
label_doubleEdit.setText("浮点数(-100~100):")
label_doubleEdit.setAlignment(Qt.AlignRight)
label_doubleEdit.setGeometry(10, 100, 120, 24)
#浮点验证器
doubleValidator = QDoubleValidator(self)
doubleValidator.setRange(-100, 100) #限制范围(-100~100)
doubleValidator.setNotation(QDoubleValidator.StandardNotation)
doubleValidator.setDecimals(3)
#输入
le_doubleEdit = QLineEdit(self)
le_doubleEdit.setValidator(doubleValidator)
le_doubleEdit.setGeometry(140, 100, 200, 24)
def email_edit(self):
#标题
label_emailEdit = QLabel('Email:', self)
label_emailEdit.setAlignment(Qt.AlignRight)
label_emailEdit.setGeometry(10, 130, 120, 24)
#正则表达式验证器,email
regEmail = QRegExp('^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+#39;)
regExpValidator = QRegExpValidator(self)
regExpValidator.setRegExp(regEmail)
#输入
le_emailEdit = QLineEdit(self)
le_emailEdit.setValidator(regExpValidator)
le_emailEdit.setGeometry(140, 130, 200, 24)
def mask_ip(self):
#标题
label_ipEdit = QLabel('IP地址掩码', self)
label_ipEdit.setAlignment(Qt.AlignRight)
label_ipEdit.setGeometry(10, 170, 120, 24)
#输入
le_ipEdit = QLineEdit(self)
le_ipEdit.setInputMask('000.000.000.000;_')
le_ipEdit.setGeometry(140, 170, 200, 24)
def mask_mac(self):
#标题
label_macEdit = QLabel('MAC地址掩码', self)
label_macEdit.setAlignment(Qt.AlignRight)
label_macEdit.setGeometry(10, 200, 120, 24)
#输入
le_macEdit = QLineEdit(self)
le_macEdit.setInputMask('HH:HH:HH:HH:HH:HH;_')
le_macEdit.setGeometry(140, 200, 200, 24)
def mask_date(self):
#标题
label_dateEdit = QLabel('日期掩码', self)
label_dateEdit.setAlignment(Qt.AlignRight)
label_dateEdit.setGeometry(10, 230, 120, 24)
#输入
le_dateEdit = QLineEdit(self)
le_dateEdit.setGeometry(140, 230, 200, 24)
def mask_license(self):
#标题
label_licenseEdit = QLabel('许可证掩码', self)
label_licenseEdit.setAlignment(Qt.AlignRight)
label_licenseEdit.setGeometry(10, 260, 120, 24)
#输入
le_licenseEdit = QLineEdit(self)
le_licenseEdit.setInputMask('>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#')
le_licenseEdit.setGeometry(140, 260, 200, 24)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = DemoLineEdit()
window.show()
sys.exit(app.exec())
运行结果如下图所示:
本文知识点
- 通过QLineEdit.setEchoMod()控制QLineEdit输入的显示方式;
- 通过QLineEdit.setInputMask()设置输入掩码,实现特殊格式的输入;
- 通过QLabel. setAlignment()设置文本的对齐方式;
- 了解通过文本验证器QIntValidator, QDoubleValidator, QRegExpValidator对QLineEdit输入的约束来实现整数,浮点数和Email的输入。
喜欢本文内容就收藏,点赞,评论,关注和转发。