PyQt5 QLineEdit基础


QLineEdit小部件是一个单行文本编辑器。
行编辑允许用户使用一组有用的编辑功能输入和编辑纯文本行,包括撤消和重做,剪切和粘贴以及拖放。
通过更改行编辑的echoMode(),还可以将其用作“只写”字段,以输入密码等输入。

QLineEdit的常用信号

名称描述
textChanged()当文本框中的内容被键盘编辑,被点击就会发出 textChanged 信号
Qt在调用这个信号处理函数时,传入的参数就是文本框目前的内容字符串。
returnPressed()用户在文本框中任何时候按下回车键触发
有时我们需要处理这种情况,比如登录界面,用户输完密码直接按回车键就进行登录处理,比再用鼠标点击登录按钮快捷的多。
textEdited()当文本被编辑时,就会发出这个信号
与textChanged()不同,当以编程方式更改文本时,例如,通过调用setText() 不会发出此信号。
editingFinished()当按返回或者回车键时,或者行编辑失去焦点时,这个信号会被发射。按回车键时会触发两次槽函数。
cursorPositionChanged()当文本框中的光标位置变动,就会发出 cursorPositionChanged 信号
inputRejected当用户输入不合法字符时,将发出此信号。前提要 setValidator() 等设置合法字符范围,Qt 5.12 版本新增

QLineEdit内置函数

函数说明
text()返回文本框内容
setText()设置文本框内容
setPlaceholderText()设置提示文本内容,即文本框浮显的文字
setAlignment()按固定值方式对齐文本
isReadOnly()获取是否设置了只读属性值
setReadOnly()设置文本框为只读,在只读模式下,用户仍然可以将文本复制到剪贴板,但不能编辑它,且不显示光标
setMaxLength()设置文本框所允许输入的最大字符数
setInputMask()设置掩码,setInputMask(‘000.000.000.000;_’),0表明要输入数字,.为分隔符
setValidator()设置文本框的验证规则
clear()清除文本框内容
setEchoMode()设置文本框显示格式
setDragEnabled()设置文本框是否接受拖动
selectAll()全选
cursorPositionAt()返回光标的位置
selectedText()得到当前被选中的文本,如果没有选中,返回一个空字符串。默认为一个空字符串
setClearButtonEnabled()设置当行编辑内容不为空时是否显示清除按钮,是最右边的小X。
setFrame(bool)设置边框,True 存在边框(默认),False 去掉边框
setCompleter()设置行编辑控件补全模板,相当于是提示信息

setAlignment()方法

水平标志

参数描述
Qt.AlignLeft水平方向靠左对齐
Qt.AlignRight水平方向靠右对齐
Qt.AlignHCenter水平方向居中对齐
Qt.AlignJustify水平方向调整间距两端对齐

垂直标志

参数描述
Qt.AlignTop垂直方向靠上对齐
Qt.AlignBottom垂直方向靠下对齐
Qt.AlignVCenter垂直方向居中对齐
Qt.AlignBaseline与基线对齐

水平垂直标志

参数描述
Qt.AlignCenter在两个维度上均居中

setInputMask()

掩码由掩码字符和分隔符字符串组成,后面可以跟一个分号和用于空白的字符,空白字符在编辑后总是从文本中删除。

  • 常用的掩码
    在这里插入图片描述

定义输入掩码的字符

掩码字符说明
AASCII字母字符是必须输入的(A-Z,a-z)
aASCII字母字符是允许输入的,但不是必须的,一般使用时和A差不多
N要求字母或数字类别的字符,例如A-Z,a-z,0-9
n允许字母或数字类别的字符,但不是必需的
X任何非空白字符
x任何字符都是允许输入的,但不是必须输入的
9需数字类别的字符,例如0-9
0允许数字类别的字符,但不是必需的
D需数字类别的字符,且必须大于零,例如1-9
d允许数字类别的字符,且必须大于零,例如1-9
#需数字类别的字符,或加号/减号等不是必须
H必须为十六进制字符。A-F,a-f,0-9
h允许使用十六进制字符,但不是必需的
B必须为二进制字符,0-1
b允许使用二进制字符,但不是必需的
元字符说明
>以下所有字母字符均大写
<以下所有字母字符均小写
!关闭大小写转换
;c终止输入掩码并将空白字符设置为c
\使用\转义上面列出的特殊字符使用它们作为分隔
# 本例中使用到了常用的一些掩码方式

QLineEdit回显格式

QLineEdit的文本有四种显示方式

参数描述
Normal正常显示,输入啥,显示啥,这是默认值
NoEcho输入但不显示任何东西,暗戳戳的执行,不显示任何内容。这可能适用于密码,即使密码的长度也应保密
Password密码格式显示
PasswordEchoOnEdit编辑时显示输入的字符,否则显示大圆点。再次编辑会删除之前的内容
import sys
from PyQt5.QtWidgets import *


class QlineEditClass(QWidget):
    def __init__(self):
        super().__init__()
        form_layout = QFormLayout()
        line_edit1 = QLineEdit()
        line_edit2 = QLineEdit()
        line_edit3 = QLineEdit()
        line_edit4 = QLineEdit()
        line_edit1.setEchoMode(QLineEdit.Normal)
        line_edit2.setEchoMode(QLineEdit.NoEcho)
        line_edit3.setEchoMode(QLineEdit.Password)
        line_edit4.setEchoMode(QLineEdit.PasswordEchoOnEdit)

        form_layout.addRow("Normal", line_edit1)
        form_layout.addRow("NoEcho", line_edit2)
        form_layout.addRow("Password", line_edit3)
        form_layout.addRow("PasswordEchoOnEdit", line_edit4)

        line_edit1.setPlaceholderText("这是Normal格式的输入")
        line_edit2.setPlaceholderText("这是NoEcho格式的输入")
        line_edit3.setPlaceholderText("这是Password格式的输入")
        line_edit4.setPlaceholderText("这是PasswordEchoOnEdit格式的输入")
        self.setLayout(form_layout)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = QlineEditClass()
    widget.setGeometry(100, 100, 400, 400)
    widget.show()
    sys.exit(app.exec_())

举例

举例1

  • 使用到editingFinished()信号,setInputMask()及text()方法。
import sys
from PyQt5.Qt import *


class QlineEditClass(QWidget):
    def __init__(self):
        super().__init__()
        self.line = QLineEdit(self)
        self.lb = QLabel('IP地址', self)
        hbox = QHBoxLayout()
        hbox.addWidget(self.lb, alignment=Qt.AlignLeft)
        hbox.addWidget(self.line, alignment=Qt.AlignRight)

        self.line.editingFinished.connect(self.action)
        self.line.setInputMask('000.000.hhh.aaa;_')
        self.setLayout(hbox)

    def action(self):
        if len(self.line.text()) > 3:
            QMessageBox.information(self, '提示信息', '这行你完成了哦')


if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = QlineEditClass()
    widget.setGeometry(100, 100, 400, 400)
    widget.show()
    sys.exit(app.exec_())

举例2

  • 使用正则表达式判断手机号是否合法
  • textEdited()信号,setText()方法的使用
  • setClearButtonEnabled()的使用
import sys
from PyQt5.Qt import *
import re


class QlineEditClass(QWidget):
    def __init__(self):
        super().__init__()
        self.line1 = QLineEdit(self)
        self.line1.setClearButtonEnabled(True)
        self.lb = QLabel('手机号', self)
        self.line2 = QLineEdit(self)

        hbox = QHBoxLayout()
        hbox.addWidget(self.lb, alignment=Qt.AlignLeft)
        hbox.addWidget(self.line1, alignment=Qt.AlignRight)
        vbox = QVBoxLayout()
        vbox.addLayout(hbox)
        vbox.addWidget(self.line2)

        self.line1.textEdited.connect(self.action_clear)
        self.line1.editingFinished.connect(self.action)
        self.setLayout(vbox)

    def action_clear(self):
        if self.line1.text() == "":
            self.line2.setText('')

    def action(self):
        regex_phone = r'^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$'
        phone = self.line1.text()
        rr1 = re.compile(regex_phone)
        if rr1.match(phone) is None:
            self.line2.setText('请填写正确的手机号!')


if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = QlineEditClass()
    widget.setGeometry(100, 100, 150, 200)
    widget.show()
    sys.exit(app.exec_())

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值