实战PyQt5: 007-单行编辑控件QLineEdit

本文介绍QLineEdit控件的功能及用法,包括文本输入、显示格式控制、输入掩码设置等,并通过实例演示如何实现不同类型的输入验证。
部署运行你感兴趣的模型镜像

QLineEdit 简介

QLineEdit是一个单行文本输入控件,可输入单行的文本字符串,这里输入常见的情况有

  • 普通文本,比如用户登录名,文件保存路径等;
  • 数字,整数或者浮点数;
  • 密码输入;
  • 日期输入;
  • EMail地址;
  • IP地址;
  • MAC地址;
  • 许可证号;
  • 其他单行输入。

QLineEdit中常用方法:

  • setAlignment():按规定的方式对齐文本;
  • clear(): 清除文本框内容;
  • setEchoMode():设置文本框的显示格式;
  • setPlaceholdertext():设置文本框浮现的文字;
  • setMaxLength():设置文本框允许输入的最大字符数;
  • setReadOnly(): 设置文本框为只读;
  • setText(): 设置文本框的内容;
  • setDragEnable():设置文本框是否接受拖动;
  • selectAll(): 选择所有文本;
  • setFocus(): 获得焦点;
  • setInputMask(): 设置掩码;
  • setValidator(): 设置文本框的验证器(验证规则),限制文本框可输入内容。

QLineEdit类中常用信号:

  • selectionChanged(): 文本选择发生改变,发射该信号;
  • textChanged();当修改文本内容时,发射发射该信号;
  • editingFinished() ; 当文本编辑结束时,该信号。

QLineEdit类继承关系:

实战PyQt5: 007-单行编辑控件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-]+)+$')
        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())

运行结果如下图所示:

实战PyQt5: 007-单行编辑控件QLineEdit

测试QLineEdit

本文知识点

  • 通过QLineEdit.setEchoMod()控制QLineEdit输入的显示方式;
  • 通过QLineEdit.setInputMask()设置输入掩码,实现特殊格式的输入;
  • 通过QLabel. setAlignment()设置文本的对齐方式;
  • 了解通过文本验证器QIntValidator, QDoubleValidator, QRegExpValidator对QLineEdit输入的约束来实现整数,浮点数和Email的输入。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值