四、PyQt5实现Python界面设计_QLineEdit(文本输入栏)

目录

一、QLineEdit控件类的介绍

(1)类

(2)常用方法函数

(3)槽

(4)信号

二、实例演示

(1)简易用户登入界面

(2)设置不同输入显示模式

(3)设置不同输入类型

(4)设置输入掩码

一、QLineEdit控件类的介绍

(1)类

Class QLineEdit:构造一个没有文本的行编辑。最大文本长度设置为32767个字符.parent参数发送到QWidget构造函数。构造一个包含文本内容的行编辑。光标位置设置为该行的末尾和最大文本长度为32767个字符。parent和参数发送到QWidget构造函数。

(2)常用方法函数

del_():如果未选择任何文本,则删除文本光标右侧的字符。如果选择了任何文本,则光标将移动到所选文本的开头,并删除所选文本。

deselect():取消选择任何选定的文本。

end(mark):将文本光标移动到该行的末尾,除非它已经在那里。如果mark为true,则选择文本到最后一个位置;否则为false。否则,如果移动了光标,则任何选定的文本都不会被选中。

selectedText():此属性保存选定的文本。如果没有选定的文本,则该属性的值为空字符串。默认情况下,此属性包含一个空字符串。

selectionEnd():直接在行编辑中选择之后返回字符的索引;如果未选择任何文本,则返回-1。

selectionLength():返回选择的长度。

selectionStart():返回行编辑中第一个选定字符的索引;如果未选择任何文本,则返回-1。

text():该属性保存行编辑的文本。设置此属性将清除选择,清除撤消/重做历史记录,将光标移至行的末尾并将修改后的属性重置为false。插入时未验证文本。文本被截断为maxLength()长度。默认情况下,此属性包含一个空字符串。

(3)槽

clear():清除行编辑的内容。

copy():如果有,并且echoMode()为Normal,则将所选文本复制到剪贴板。

cut():将所选文本复制到剪贴板,如果有,并且echoMode()为Normal,则将其删除。如果当前验证器不允许删除所选文本,则将复制而不删除。

paste():如果行编辑不是只读的,则将剪贴板的文本插入光标位置,删除所有选定的文本。如果最终结果对当前验证器无效,则什么都不会发生。

redo():如果可以重做,则重做上一个操作。.

selectAll():选择所有文本(即突出显示文本)并将光标移到末尾。当插入默认值时,这很有用,因为如果用户在单击窗口小部件之前键入内容,则所选文本将被删除。

setText(arg__1):该属性保存行编辑的文本。设置此属性将清除选择,清除撤消/重做历史记录,将光标移至行的末尾并将修改后的属性重置为false。插入时未验证文本。文本被截断为maxLength()长度。默认情况下,此属性包含一个空字符串。

undo():如果撤消可用,则撤消上一次操作。取消选择任何当前选择,并将选择开始更新为当前光标位置。

(4)信号

cursorPositionChanged(arg__1,arg__2)

editingFinished()

inputRejected()

returnPressed()

selectionChanged()

textChanged(arg__1)

textEdited(arg__1)

二、实例演示

(1)简易用户登入界面

from PyQt5.QtWidgets import *
import sys

class QLabelBuddy(QDialog) :
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('QLabel与伙伴控件')

        nameLabel = QLabel('Name',self)#实例一个文本控件对象并设置Text
        nameLineEdit = QLineEdit(self)#实例一个文本框控件对象
        # 设置伙伴控件
        nameLabel.setBuddy(nameLineEdit)

        passwordLabel = QLabel('Password',self)#实例一个文本控件对象并设置Text
        passwordLineEdit = QLineEdit(self)
        # 设置伙伴控件
        passwordLabel.setBuddy(passwordLineEdit)

        btnOK = QPushButton('OK')#实例一个按钮控件对象
        btnCancel = QPushButton('&Cancel')#实例一个按钮控件对象

        mainLayout = QGridLayout(self)#实例一个网格布局器并指定父函数
        mainLayout.addWidget(nameLabel,0,0)#第0行第0列,占1行1列
        mainLayout.addWidget(nameLineEdit,0,1,1,2)#第0行第1列,占1行2列

        mainLayout.addWidget(passwordLabel,1,0)#第1行第0列,占1行1列
        mainLayout.addWidget(passwordLineEdit,1,1,1,2)#第1行第1列,占1行2列

        mainLayout.addWidget(btnOK,2,1)#第2行第1列,占1行1列
        mainLayout.addWidget(btnCancel,2,2)#第2行第2列,占1行1列
        
        btnOK.clicked.connect(lambda:self.printtext(nameLineEdit.text()
        +";"+passwordLineEdit.text()))
        btnCancel.clicked.connect(self.cancelClicked)
        
    def printtext(self,text):
        print(text)
    def cancelClicked(self):
        print("溜了溜了")
        app = QApplication.instance()
        # 退出应用程序
        app.exec_()
        app.quit()
    
if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QLabelBuddy()
    main.show()
    app.exec_()
    del app

 

(2)设置不同输入显示模式

from PyQt5.QtWidgets import *

import sys

class QLineEditEchoMode(QWidget) :
    def __init__(self):
        super(QLineEditEchoMode,self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('文本输入框的回显模式')

        formLayout = QFormLayout()#实例一个表单布局器

        normalLineEdit = QLineEdit()#实例一个文本框控件normalLineEdit
        noEchoLineEdit = QLineEdit()#实例一个文本框控件noEchoLineEdit
        passwordLineEdit = QLineEdit()#实例一个文本框控件passwordLineEdit
        passwordEchoOnEditLineEdit = QLineEdit()#实例一个文本框控件passwordEchoOnEditLineEdit

        #添加对应Label与文本框控件
        formLayout.addRow("Normal",normalLineEdit)
        formLayout.addRow("NoEcho", noEchoLineEdit)
        formLayout.addRow("Password",passwordLineEdit)
        formLayout.addRow("PasswordEchoOnEdit",passwordEchoOnEditLineEdit)

        # 设置文本文框的placeholdertext
        normalLineEdit.setPlaceholderText("Normal")
        noEchoLineEdit.setPlaceholderText("NoEcho")
        passwordLineEdit.setPlaceholderText("Password")
        passwordEchoOnEditLineEdit.setPlaceholderText("PasswordEchoOnEdit")
        
        # 设置文本框四种不同的文本显示
        normalLineEdit.setEchoMode(QLineEdit.Normal)
        noEchoLineEdit.setEchoMode(QLineEdit.NoEcho)
        passwordLineEdit.setEchoMode(QLineEdit.Password)
        passwordEchoOnEditLineEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit)

        self.setLayout(formLayout)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QLineEditEchoMode()
    main.show()
    app.exec_()
    del app

 

(3)设置不同输入类型

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(10,20)
#         intValidator.setRange(1,20)

        # 浮点校验器 [0,360],精度:小数点后2位
        doubleValidator = QDoubleValidator(self)
        doubleValidator.setRange(2,20)
        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()
    app.exec_()
    del app

 

(4)设置输入掩码

from PyQt5.QtWidgets import *
import sys

class QLineEditMask(QWidget) :
    def __init__(self):
        super(QLineEditMask,self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('用掩码限制QLineEdit控件的输入')
        formLayout = QFormLayout()

        ipLineEdit = QLineEdit()
        macLineEdit = QLineEdit()
        dateLineEdit = QLineEdit()
        licenseLineEdit = QLineEdit()
        #设置掩码格式
        ipLineEdit.setInputMask('000.000.000.000;_')
        macLineEdit.setInputMask('HH:HH:HH:HH:HH:HH;_')
        dateLineEdit.setInputMask('0000-00-00')
        licenseLineEdit.setInputMask('>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#')
        #控件嵌入分布器
        formLayout.addRow('数字掩码',ipLineEdit)
        formLayout.addRow('Mac掩码', macLineEdit)
        formLayout.addRow('日期掩码',dateLineEdit)
        formLayout.addRow('许可证掩码',licenseLineEdit)

        self.setLayout(formLayout)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QLineEditMask()
    main.show()
    app.exec_()
    del app

 

掩码规则

A    ASCII字母字符是必须输入的(A-Z、a-z)
a    ASCII字母字符是允许输入的,但不是必需的(A-Z、a-z)
N    ASCII字母字符是必须输入的(A-Z、a-z、0-9)
n    ASII字母字符是允许输入的,但不是必需的(A-Z、a-z、0-9)
X    任何字符都是必须输入的
x    任何字符都是允许输入的,但不是必需的
9    ASCII数字字符是必须输入的(0-9)
0    ASCII数字字符是允许输入的,但不是必需的(0-9)
D    ASCII数字字符是必须输入的(1-9)
d    ASCII数字字符是允许输入的,但不是必需的(1-9)
#    ASCI数字字符或加减符号是允许输入的,但不是必需的
H    十六进制格式字符是必须输入的(A-F、a-f、0-9)
h    十六进制格式字符是允许输入的,但不是必需的(A-F、a-f、0-9)
B    二进制格式字符是必须输入的(0,1)
b    二进制格式字符是允许输入的,但不是必需的(0,1)
>    所有的字母字符都大写
<    所有的字母字符都小写
!    关闭大小写转换
\    使用"\"转义上面列出的字符

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值