四时宝库

程序员的知识宝库

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


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的输入。

喜欢本文内容就收藏,点赞,评论,关注和转发。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接