11.PyQt5【基本组件】单行输入框-QLineEdit
一、前言
QLineEdit是最常用的输入字段。它提供了一个框,可以在其中输入一行文本。
二、学习目标
1.QLineEdit常用方法
2.QLineEdit常用信号
3.QLineEdit组件的应用
三、知识点
1.【QLineEdit常用方法】
方法 | 描述 |
---|---|
text() | 返回文本框内容 |
setText() | 设置文本框内容 |
setAlignment() | 按固定值方式对齐文本 Qt.AlignLeft:水平方向靠左对齐 Qt.AlignRight:水平方向靠右对齐 Qt.AlignCenter:水平方向居中对齐 Qt.AlignJustify:水平方向调整间距两端对齐 Qt.AlignTop:垂直方向靠上对齐 Qt.AlignBottom:垂直方向靠下对齐 Qt.AlignVcenter:垂直方向居中对齐 |
setReadOnly() | 设置文本框为只读 |
setPlaceholderText() | 设置文本框浮显的文字 |
setMaxLength() | 设置文本框所允许输入的最大字符数 |
setInputMask() | 设置掩码 |
setValidator() | 设置文本框的验证规则,校验器如下: QIntValidator:限制输入整数 QDoubleValidator:限制输入浮点数 QRegexpValidator:检查输入是否组合正则表达式 |
clear() | 清除文本框内容 |
setEchoMode() | 设置文本框显示格式 QLineEdit.Normal:正常显示所输入的字符,此为默认 QlineEdit.NoEcho:不显示热河输入的字符,常用于密码类型的输入,且其密码长度需要保密时 QlineEdit.Password:显示与平台相关的密码掩码字符,而不是实际输入的字符 QlineEdit.PasswordEchoOnEdit:在编辑室显示字符,负责显示密码类型的输入 |
setDragEnabled() | 设置文本框是否接受拖动 |
selectAll() | 全选 |
cursorPositionAt() | 返回光标的位置 |
selectedText() | 得到当前被选中的文本 |
setClearButtonEnabled() | 设置当行编辑内容不为空时是否显示清除按钮。 |
setFrame() | 设置边框,True 存在边框(默认),False 去掉边框 |
setCompleter() | 设置行编辑控件补全模板 |
2.【QLineEdit常用信号】
信号 | 说明 |
---|---|
textChanged | 当修改文本内容时,这个信号会被发射 |
textEdited | 当文本被编辑时,就会发射这个信号 |
returnPressed | 光标在行编辑框内时,点击回车键即发射信号 |
selectionChanged | 当选择的文本内容改变了,这个信号就会被发射 |
editingFinished | 当按返回或者回车键时,或者行编辑失去焦点时,这个信号会被发射 |
cursorPositionChanged | 当焦点,即光标位置改变就发射信号 |
inputRejected | 当用户输入不合法字符时,将发出此信号。前提要 setValidator() 等设置合法字符范围,Qt 5.12 版本新增。 |
3.【QLineEdit组件的应用】
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit
class QmyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent) # 调用父类的构造函数,创建QWidget窗体
self.setupUi()
def setupUi(self):
"""页面初始化"""
# 设置窗体大小及标题
self.resize(500, 400)
self.setWindowTitle("QLineEdit组件示例")
# 创建布局
self.layout = QVBoxLayout()
# QLineEdit组件定义
self.line1 = QLineEdit(self)
self.line1.setText("第一个单行文本")
self.line2 = QLineEdit('第二个单行文本', self)
# QLineEdit组件设置
self.line1.setReadOnly(True) # line1设置只读
self.line2.setPlaceholderText("请输入单行文本!")
# QLineEdit关联信号
self.line2.editingFinished.connect(self.on_line2_editingFinished)
# 将组件添加到布局中
self.layout.addWidget(self.line1)
self.layout.addWidget(self.line2)
# 为窗体添加布局
self.setLayout(self.layout)
def on_line2_editingFinished(self):
"""line2组件槽函数"""
print("line2文本被修改啦!")
if __name__ == '__main__':
app = QApplication(sys.argv)
myMain = QmyWidget()
myMain.show()
sys.exit(app.exec_())
-
关键代码
# QLineEdit组件定义 self.line1 = QLineEdit(self) self.line1.setText("第一个单行文本") self.line2 = QLineEdit('第二个单行文本', self) # QLineEdit组件设置 self.line1.setReadOnly(True) # line1设置只读 self.line2.setPlaceholderText("请输入单行文本!") # QLineEdit关联信号 self.line2.editingFinished.connect(self.on_line2_editingFinished)
定义两个单行文本组件,分别为line1设置只读,为line2设置提示文本(只有为空时显示),并为line2关编辑信号。editingFinished编辑信号是在全部文本输入完成后触发;textChanged信号是每输入完一个字符则触发。