本文主要是介绍PyQt介绍——单行文本输入框QLineEdit,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
PyQt介绍——单行文本输入框QLineEdit
QLineEdit是单行文本输入框,允许用户输入和编辑单行纯文本
常用方法:
-
文本设置,获取和删除
方法 描述 setText(str) 设置内容文本 insert(newText) 在光标处插入文本 text() 获取真实内容文本(用户输入的内容) displayText() 获取用户能看到的内容文本(密文显示时获取的是密文) clear() 清除文本框内容 setEchoMode(QLineEdit.EchoMode) 设置文本框显示模式 setPlaceholderText() 设置文本框占位提示字符 placeholderText() 获取占位提示字符内容 setClearButtonEnabled(bool) 设置是否显示清空按钮 isClearButtonEnabled() -> bool 获取是否设置显示清空按钮 isModified() 获取文本框是否被编辑过(编辑之后光标离开,依然返回True),这里获取的并不是文本框是否可以编辑,也不是获取是否正在编辑 setModified(bool) 设置文本框是否被编辑过 -
设置显示格式setEchoMode(QLineEdit.EchoMode)
属性 说明 QLineEdit.NoEcho 不输出(不显示内容,实际是有内容) QLineEdit.Normal 正常输出 QLineEdit.Password 密文输出 QLineEdit.PasswordEchoOnEdit 编辑时明文, 结束后密文 -
输入限制
方法 说明 setMaxLength(int) 设置限制输入的最大长度(字符个数,不是字节数) maxLength() 获取设定的最大输入长度 setReadOnly(bool) 设置内容只读,可以选中复制,不能修改 isReadOnly() 获取是否设置只读 setValidator 设置验证器验证 setCompleter(QCompleter) 设置完成器(自动补全) setInputMask(mask_str) 设置掩码验证 setDragEnabled() 设置文本框是否拖动 -
对齐方式setAlignment(Qt.Alignment)
alignment() :获取文本内容对其方式,返回 Qt.Alignment 对象
方向 属性 描述 水平方向 Qt.AlignLeft 水平居左 Qt.AlignRight 水平居右 Qt.AlignHCenter 水平居中 Qt.AlignJustify 水平方向调整间距两端对齐 垂直方向 Qt.AlignTop 垂直居上 Qt.AlignBottom 垂直居下 Qt.AlignVCenter 垂直居中 Qt.AlignBaseline 与基线对齐 水平和垂直 Qt.AlignCenter 垂直和水平都居中,相当于Qt.AlignHCenter -
文本边距设置
setTextMargins(int left,int top,int right,int bottom):设置文本内容边距
getTextMargins() : 获取文本内容的边距,返回一个元组 -
常用编辑功能
backspace() # 删除选中文本(如果有) 或 删除光标左侧一个字符
del_() # 删除选中文本(如果有) 或 删除光标右侧的一个字符
clear() # 删除文本框所有内容
copy() # 复制
cut() # 剪切
paste() # 粘贴
isUndoAvailable() # 撤消是否可用
undo() # 撤消
isRedoAvailable() # 重做是否可用
redo() # 重做setDragEnabled(bool) # 设置选中文本后是否可以拖拽
setSelection(start_pos, length) # 选中指定区间的文本
selectAll() # 选中所有文本
deselect() # 取消选中已选择文本
hasSelectedText() # 是否有选中文本
selectedText() -> str # 获取选中的文本
selectionStart() -> int # 选中的开始位置
selectionEnd() -> int # 选中的结束位置
selectionLength() -> int # 选中的长度 -
常用信号
信号 说明 textEdited(text) 文本编辑时发射的信号(通过代码设置文本内容时候不会触发该信号) textChanged(text) 文本框文本发生改变时发出的信号 returnPressed() 按下回车键时发出的信号 editingFinished() 结束编辑时发出的信号(按下回车键、Tab键、丢失焦点时) cursorPositionChanged(int oldPos,int newPos) 光标位置发生改变时发出的信号,传递原光标位置和新光标位置 selectionChanged() 选中的文本发生改变时发出的信号(光标开始移动时就会触发该信号,并不需要等到选中文本) -
掩码字符
掩码字符 说明1 说明2 A 需要ASCII字母字符AZ,az ASCII字母字符是必须输入的(A-Z、a-z) a 允许但不要求使用ASCII字母字符 ASCII字母字符是允许输入的,但不是必需的(A-Z、a-z) N 需要ASCII字母数字字符AZ,az,0-9 ASCII字母字符是必须输入的(A-Z、a-z、0-9) n 允许但不要求使用ASCI字母数字字符 ASII字母字符是允许输入的,但不是必需的(A-Z、a-z、0-9) X 需要任何角色 任何字符都是必须输入的 x 允许但不要求的任何角色 任何字符都是允许输入的,但不是必需的 9 需要ASCII数字0-9 ASCII数字字符是必须输入的(0-9) 0 允许使用ASCII数字但不是必需的 ASCII数字字符是允许输入的,但不是必需的(0-9) D 需要ASCII数字1-9 ASCII数字字符是必须输入的(1-9) d 允许但不需要ASCII数字 (1-9) ASCII数字字符是允许输入的,但不是必需的(1-9) # 允许但不要求ASCII数字或加号/减号 ASCI数字字符或加减符号是允许输入的,但不是必需的 H 需要十六进制字符AF,af,0-9 十六进制格式字符是必须输入的(A-F、a-f、0-9) h 允许使用十六进制字符,但不是必需的 十六进制格式字符是允许输入的,但不是必需的(A-F、a-f、0-9) B 需要二进制字符0-1 二进制格式字符是必须输入的(0,1) b 允许二进制字符但不是必需的 二进制格式字符是允许输入的,但不是必需的(0,1) > 以下所有字母字符均为大写字母 所有的字母字符都大写 < 以下所有字母字符均为小写字母 所有的字母字符都小写 ! 关闭大小转换 关闭大小写转换 \ 使用\逃脱上面列出的特殊字符使用它们作为分隔符 使用""转义上面列出的字符 []{} 保留
例子:
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import QApplication, QLineEdit, QWidget, QFormLayout, QPushButton, QCompleter
from PyQt5.QtGui import QIntValidator, QDoubleValidator, QFont
from PyQt5.QtCore import Qt
import sysclass QlineEidtDemo1(QWidget):def __init__(self, parent=None):super(QlineEidtDemo1, self).__init__(parent)self.resize(500, 500)self.setWindowTitle("QLineEdit例子")form_lyt = QFormLayout()# 显示格式demoline1 = QLineEdit()line1.setMaxLength(3) # 长度限制为3个字符line2 = QLineEdit()line3 = QLineEdit()line4 = QLineEdit()line4.setClearButtonEnabled(True) # 设置开启清空按钮# 设置文本demoself.line_src = QLineEdit()self.line_dst = QLineEdit()self.line_dst.setReadOnly(True) # 设置为只读btn = QPushButton('复制内容')btn.clicked.connect(self.copy_text)# 自动补全demoself.account_line = QLineEdit()# 创建QCompleter对象,用于自动补全参数completer = QCompleter(['Hello', 'Hi', 'BiuBiu', 'Biu', 'Aplle', 'abi'], self.account_line)self.account_line.setCompleter(completer) # 设置自动补全# 输入限制le1 = QLineEdit(self)le2 = QLineEdit(self)le3 = QLineEdit(self)le4 = QLineEdit(self)le5 = QLineEdit(self)le1.setInputMask('9999-9999999;0') # 座机号码:4位区号-7位电话,默认显示0le2.setInputMask('999.999.999.999;') # IP地址:3位数字.3位数字.3位数字.3位数字,默认显示Xle3.setInputMask('99999999999999999>N') # 身份证号:17位数字+1位数字或大写字母le4.setInputMask('HH:HH:HH:HH:HH:HH;_') # Mac地址:6组 十六进制字符,分隔符为:,默认显示_le5.setInputMask('>A!A_NNNNNN') # 测试掩码:1位大写字母+1位大小写字母_6位大小写字母或者数字form_lyt.addRow("姓名: ", line1)form_lyt.addRow("年龄: ", line2)form_lyt.addRow("密码1: ", line3)form_lyt.addRow("密码2: ", line4)form_lyt.addRow(self.line_src, self.line_dst)form_lyt.addRow(btn)form_lyt.addRow("座机号码: ", le1)form_lyt.addRow("IP地址: ", le2)form_lyt.addRow("身份证号: ", le3)form_lyt.addRow("Mac地址: ", le4)form_lyt.addRow("掩码测试: ", le5)# 设置占位符文本line1.setPlaceholderText("输入姓名, 长度限制为3个字符")line2.setPlaceholderText("输入年龄,但是不会显示出来")line3.setPlaceholderText("输入密码")line4.setPlaceholderText("输入密码")self.line_src.setPlaceholderText("输入内容") # 回车后密码显示self.line_dst.setPlaceholderText("点击复制内容按钮会同步到这里") # 回车后密码显示# 设置显示效果line1.setEchoMode(QLineEdit.Normal) # 正常显示line2.setEchoMode(QLineEdit.NoEcho) # 不显示line3.setEchoMode(QLineEdit.Password) # 密码显示line4.setEchoMode(QLineEdit.PasswordEchoOnEdit) # 编辑时正常输出,失去光标时候显示密文self.setLayout(form_lyt)def copy_text(self):self.line_dst.setText(self.line_src.text())if __name__ == "__main__":app = QApplication(sys.argv)win = QlineEidtDemo1()win.show()sys.exit(app.exec_())
这篇关于PyQt介绍——单行文本输入框QLineEdit的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!