目录
一、QLineEdit控件类的介绍
(1)类
(2)常用方法函数
(3)槽
(4)信号
二、实例演示
(1)简易用户登入界面
(2)设置不同输入显示模式
(3)设置不同输入类型
(4)设置输入掩码
Class QLineEdit:构造一个没有文本的行编辑。最大文本长度设置为32767个字符.parent参数发送到QWidget构造函数。构造一个包含文本内容的行编辑。光标位置设置为该行的末尾和最大文本长度为32767个字符。parent和参数发送到QWidget构造函数。
del_():如果未选择任何文本,则删除文本光标右侧的字符。如果选择了任何文本,则光标将移动到所选文本的开头,并删除所选文本。
deselect():取消选择任何选定的文本。
end(mark):将文本光标移动到该行的末尾,除非它已经在那里。如果mark为true,则选择文本到最后一个位置;否则为false。否则,如果移动了光标,则任何选定的文本都不会被选中。
selectedText():此属性保存选定的文本。如果没有选定的文本,则该属性的值为空字符串。默认情况下,此属性包含一个空字符串。
selectionEnd():直接在行编辑中选择之后返回字符的索引;如果未选择任何文本,则返回-1。
selectionLength():返回选择的长度。
selectionStart():返回行编辑中第一个选定字符的索引;如果未选择任何文本,则返回-1。
text():该属性保存行编辑的文本。设置此属性将清除选择,清除撤消/重做历史记录,将光标移至行的末尾并将修改后的属性重置为false。插入时未验证文本。文本被截断为maxLength()长度。默认情况下,此属性包含一个空字符串。
clear():清除行编辑的内容。
copy():如果有,并且echoMode()为Normal,则将所选文本复制到剪贴板。
cut():将所选文本复制到剪贴板,如果有,并且echoMode()为Normal,则将其删除。如果当前验证器不允许删除所选文本,则将复制而不删除。
paste():如果行编辑不是只读的,则将剪贴板的文本插入光标位置,删除所有选定的文本。如果最终结果对当前验证器无效,则什么都不会发生。
redo():如果可以重做,则重做上一个操作。.
selectAll():选择所有文本(即突出显示文本)并将光标移到末尾。当插入默认值时,这很有用,因为如果用户在单击窗口小部件之前键入内容,则所选文本将被删除。
setText(arg__1):该属性保存行编辑的文本。设置此属性将清除选择,清除撤消/重做历史记录,将光标移至行的末尾并将修改后的属性重置为false。插入时未验证文本。文本被截断为maxLength()长度。默认情况下,此属性包含一个空字符串。
undo():如果撤消可用,则撤消上一次操作。取消选择任何当前选择,并将选择开始更新为当前光标位置。
cursorPositionChanged(arg__1,arg__2)
editingFinished()
inputRejected()
returnPressed()
selectionChanged()
textChanged(arg__1)
textEdited(arg__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
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
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
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)
> 所有的字母字符都大写
< 所有的字母字符都小写
! 关闭大小写转换
\ 使用"\"转义上面列出的字符