2020 PyQt5控件内置信号与函数汇总(1):QLineEdit内置信号与函数
PyQt5 控件内置信号与函数汇总(1):QLineEdit内置信号与函数不断更新中。。文章目录PyQt5 控件内置信号与函数汇总(1):QLineEdit内置信号与函数0.继承关系1. QLineEdit内置信号1.1 ==**textChanged 信号**==1.2 **==textEdited 信号==**1.3 **==returnPressed 信号==**1.4 **selectio
2020 PyQt5 控件内置信号与函数汇总(1):QLineEdit内置信号与函数
文章目录
0.继承关系
控件(Classes) | QLineEdit |
---|---|
qimport: | PyQt5.QtWidgets.QLineEdit |
继承自(Inherits): | QWidget |
一般情况下,继承的子类拥有父类的所有函数
.
1. QLineEdit内置信号
表一 信号汇总表
信号 | 说明 | |
---|---|---|
1 | textChanged | 当修改文本内容时,这个信号会被发射 |
2 | textEdited | 当文本被编辑时,就会发射这个信号 |
3 | returnPressed | 光标在行编辑框内时,点击回车键即发射信号 |
4 | selectionChanged | 当选择的文本内容改变了,这个信号就会被发射 |
5 | editingFinished | 当按返回或者回车键时,或者行编辑失去焦点时,这个信号会被发射 |
6 | cursorPositionChanged | 当焦点,即光标位置改变就发射信号 |
7 | inputRejected | 当用户输入不合法字符时,将发出此信号。前提要 setValidator() 等设置合法字符范围,Qt 5.12 版本新增。 |
拓:信号连接槽函数完整格式
(控件名).(信号名)[内置参数].connect(lambda 内置参数:函数名(参数))
#[内置参数], lambda 内置参数:, 参数 这几个可以缺省
信号详细说明:
1.1 textChanged 信号
当修改文本内容时,这个信号会被发射。
当以编程方式更改文本时,例如,通过调用setText()
会发出此信号。
信号连接代码:
# 连接语句
self.lineEdit.textChanged.connect(lambda current_text: self.textChanged_func(current_text))
# 槽函数
def textChanged_func(self,current_text):
print("文本框内容变化信号", current_text)
self.textBrowser.append("文本框内容变化信号" + current_text + '\n')
lambda current_text:
lambda是pyqt5信号传递参数的关键字,current_text 是 textChanged 内置参数,名称可以更改。可以缺省。current_text 传递的是当前LineEdit控件的文本字符串内容。
测试:
依次输入 a, a, a,再依次删除 a,a
1.2 textEdited 信号
当文本被编辑时,就会发出这个信号
与textChanged()
不同,当以编程方式更改文本时,例如,通过调用setText()
不会发出此信号。
信号连接代码:
#单行文本框编辑信号连接
self.lineEdit.textEdited.connect(lambda current_text: self.line_edited_func(current_text))
#槽函数
def line_edited_func(self, current_text):
print("文本框编辑信号", current_text)
self.textBrowser.append("文本框编辑信号"+current_text+'\n')
代码说明:
self.lineEdit
是单行文本框在测试类中对象变量名
lambda current_text:
lambda是pyqt5信号传递参数的关键字,current_text 是 textEdited 内置参数,名称可以更改。可以缺省。current_text 传递的是当前LineEdit控件的文本字符串内容。不想传递参数时代码:
#单行文本框编辑信号连接 self.lineEdit.textEdited.connect(self.line_edited_func) #槽函数 def line_edited_func(self): print("文本框编辑信号") self.textBrowser.append("文本框编辑信号"+'\n')
在我依次输入 a, s, s 时
实验结果:
共触发 3 次textEdited
信号
需要完整源代码可以看文章末尾。
1.3 returnPressed 信号
当光标在行编辑框内时,点击回车即发射信号
# 单行文本框回车键信号连接
self.lineEdit.returnPressed.connect(self.returnPressed_func)
# 槽函数
def returnPressed_func(self):
current_text = self.lineEdit.text()
print("文本框回车键信号", current_text)
self.textBrowser.append("文本框回车键信号" + current_text + '\n' + '\n' + '回车键')
代码说明:
由于信号
returnPressed
没有默认传递参数,所以在槽函数获取当前文本进行操作。注意:回车键产生的 换行符
'\n'
并没有计入当前输入文本里。
测试:输入 a 后按回车键,结果如下
由结果可以验证回车键产生的 换行符'\n'
并没有计入当前输入文本里。如果计入的话,会空两行。
1.4 selectionChanged 信号
当选择的文本内容改变了,这个信号就会被发射
# 连接
self.lineEdit.selectionChanged.connect(self.selectionChanged_func) # 选中文本发生改变事件
# 槽函数
def selectionChanged_func(self):
selected_text = self.lineEdit.selectedText()
print("文本框选中文本信号", selected_text)
self.textBrowser.append("文本框选中文本信号" + selected_text + '\n')
注:触发次数很多,只要鼠标还没有离开选中的文本,即使你没有动,也会触发,使用起来非常不便。
1.5 editingFinished 信号
当按返回或者回车键时,或者行编辑失去焦点时,这个信号会被发射。按回车键时会触发两次槽函数。
self.lineEdit.editingFinished.connect(self.editingFinished_fun) # 结束编辑信号
def editingFinished_fun(self):
current_text = self.lineEdit.text()
self.textBrowser.append("文本框回车键信号" + current_text + '\n')
测试,输入 a 后按回车键,再输入 b 后点击其他地方结束编辑。
1.6 cursorPositionChanged 信号
当光标位置改变就发射信号
self.lineEdit.cursorPositionChanged.connect(lambda old_Pos, new_Pos: self.cursorPos_func(old_Pos, new_Pos)) # 焦点发生改变
# 槽函数
def cursorPos_func(self, old_Pos, new_Pos):
self.textBrowser.append("文本框焦点发生改变信号" + str(old_Pos)+ '\n' + str(new_Pos) + '\n')
测试:接连输入 a ,a,a,再把光标点击到第二个 a 后面。
注:当文本框初始化时,光标位置为 -1。光标位置为数值类型,不是字符串类型。
2. QLineEdit内置函数
表二 函数汇总表
函数 | 说明 | |
---|---|---|
1 | text() | 返回文本框内容 |
2 | setText() | 设置文本框内容 |
3 | setAlignment() | 按固定值方式对齐文本 |
4 | setReadOnly() | 设置文本框为只读 |
5 | setPlaceholderText() | 设置文本框浮显的文字 |
6 | setMaxLength() | 设置文本框所允许输入的最大字符数 |
7 | setInputMask() | 设置掩码 |
8 | setValidator() | 设置文本框的验证规则 |
9 | clear() | 清除文本框内容 |
10 | setEchoMode() | 设置文本框显示格式 |
11 | setDragEnabled() | 设置文本框是否接受拖动 |
12 | selectAll() | 全选 |
13 | cursorPositionAt() | 返回光标的位置 |
14 | selectedText() | 得到当前被选中的文本 |
15 | setClearButtonEnabled() | 设置当行编辑内容不为空时是否显示清除按钮。 |
16 | setFrame( bool) | 设置边框,True 存在边框(默认),False 去掉边框 |
17 | setCompleter() | 设置行编辑控件补全模板 |
函数详细说明:
2. setText()
设置文本框内容
类比一下, text()
是获取文本,加一个set 就变成设置文本了,这在 pyqt5 控件方法中很常见。要学会类比
代码:
Lobject.setText(QString) #QString表明需要字符串变量或常量
注:用 Lobject 代表 lineEdit 对象名,以下 Lobject 同义
QString
表明需要字符串变量或常量
3. setAlignment()
代码:
Lobject.setAlignment(Qt.AlignLeft)
注:object 代表 lineEdit 对象名,以下 object 同义
水平标志(The horizontal flags are):
Constant | 中文描述 | Description |
---|---|---|
Qt.AlignLeft | 水平方向靠左对齐 | Aligns with the left edge. |
Qt.AlignRight | 水平方向靠右对齐 | Aligns with the right edge. |
Qt.AlignHCenter | 水平方向居中对齐 | Centers horizontally in the available space. |
Qt.AlignJustify | 水平方向调整间距两端对齐 | Justifies the text in the available space. |
垂直标志(The vertical flags are):
Constant | 中文描述 | Description |
---|---|---|
Qt.AlignTop | 垂直方向靠上对齐 | Aligns with the top. |
Qt.AlignBottom | 垂直方向靠下对齐 | Aligns with the bottom. |
Qt.AlignVCenter | 垂直方向居中对齐 | Centers vertically in the available space. |
Qt.AlignBaseline | 与基线对齐 | Aligns with the baseline. |
水平垂直标志:
Constant | 中文描述 | Description |
---|---|---|
Qt.AlignCenter | 在两个维度上均居中 | Centers in both dimensions. |
4.setReadOnly()
Lobject.setReadOnly(bool) # bool为True,或者False(默认)
如果参数是布尔值(bool),类比一下,isReadOnly()
就是获取是否设置了只读属性值,返回的也是布尔值。这在 pyqt5 控件方法中也很常见
5.setPlaceholderText()
Lobject.setPlaceholderText(QString)
效果如上图。当输入字符时,该设置字符串会消失。
6.setMaxLength()
Lobject.setMaxLength(int)# int表明需要一个整型常量或变量
7.setInputMask()
设置输入掩码
Lobject.setInputMask('000.000.000.000;_')
# 这是一个输入 IP 地址的掩码例子,0表明要输入数字,`.`为分隔符
测试结果
可以由下面表格的字符设计输入掩码。
定义输入掩码的字符
掩码字符 | 中文说明 | Meaning |
---|---|---|
A | ASCII字母字符是必须输入的(A-Z,a-z) | character of the Letter category required, such as A-Z, a-z. |
a | ASCII字母字符是允许输入的,但不是必须的,一般使用时和A 差不多 | character of the Letter category permitted but not required. |
N | 要求字母或数字类别的字符,例如A-Z,a-z,0-9 | character of the Letter or Number category required, such as A-Z, a-z, 0-9. |
n | 允许字母或数字类别的字符,但不是必需的 | character of the Letter or Number category permitted but not required. |
X | 任何非空白字符 | Any non-blank character required. |
x | 任何字符都是允许输入的,但不是必须输入的 | Any non-blank character permitted but not required. |
9 | 需数字类别的字符,例如0-9 | character of the Number category required, e.g 0-9. |
0 | 允许数字类别的字符,但不是必需的 | character of the Number category permitted but not required. |
D | 需数字类别的字符,且必须大于零,例如1-9 | character of the Number category and larger than zero required, such as 1-9 |
d | 允许数字类别的字符,且必须大于零,例如1-9 | character of the Number category and larger than zero permitted but not required, such as 1-9. |
# | 需数字类别的字符,或加号/减号等不是必须 | character of the Number category, or plus/minus sign permitted but not required. |
H | 必须为十六进制字符。A-F,a-f,0-9 | Hexadecimal character required. A-F, a-f, 0-9. |
h | 允许使用十六进制字符,但不是必需的 | Hexadecimal character permitted but not required. |
B | 必须为二进制字符,0-1 | Binary character required. 0-1. |
b | 允许使用二进制字符,但不是必需的 | Binary character permitted but not required. |
元字符 | Meaning | |
> | 以下所有字母字符均大写 | All following alphabetic characters are uppercased. |
< | 以下所有字母字符均小写 | All following alphabetic characters are lowercased. |
! | 关闭大小写转换 | Switch off case conversion. |
;c | 终止输入掩码并将空白字符设置为c | Terminates the input mask and sets the blank character to c. |
[] {} | 保留 | Reserved. |
\ | 使用\ 转义上面列出的特殊字符使用它们作为分隔符 | Use \ to escape the special characters listed above to use them as separators. |
注:一般使用时,A,a,N,n 等大小写作用是一样的。
8.setValidator()
设置文本框的验证规则
#整型 范围 【1-99】
#实例化整型验证器,并设置范围为1-99
pIntvalidator=QIntValidator(self)
pIntvalidator.setRange(1,99)
#浮点型 范围 【-360,360】,精度 小数点后两位
#实例化浮点验证器,设置范围-360到360
pDoubleValidator=QDoubleValidator(self)
pDoubleValidator.setRange(-360,360)
pDoubleValidator.setNotation(QDoubleValidator.StandardNotation)
#设置精度小数点后两位
pDoubleValidator.setDecimals(2)
#字母和数字
#设置文本允许出现的字符内容
reg=QRegExp('[a-zA-Z0-9]+$')
#自定义文本验证器
pValidator=QRegExpValidator(self)
#设置属性
pValidator.setRegExp(reg)
#设置验证器
pIntLineEdit.setValidator(pIntvalidator)
pDoubleLineEdit.setValidator(pDoubleValidator)
pValidatorLineEdit.setValidator(pValidator)
验证器汇总:
验证器 | 描述 | |
---|---|---|
1 | QIntValidator | 整型 |
2 | QDoubleValidator | 浮点型 |
3 | QRegExpValidator | 正则表达式(可以包含上面两个) |
10.setEchoMode()
设置文本框显示格式
#QLineEdit.Normal:正常显示所输入的字符,此为默认选项
PNormalLineEdit.setEchoMode(QLineEdit.Normal)
#QLineEdit.NoEcho:不显示任何输入的字符,常用于密码类型的输入,且长度保密
pNoEchoLineEdit.setEchoMode(QLineEdit.NoEcho)
#QLineEdit.Password:显示与平台相关的密码掩饰字符,而不是实际输入的字符
pPasswordListEdit.setEchoMode(QLineEdit.Password)
#QLineEdit.PasswordEchoOnEdit:在编辑时显示字符,负责显示密码类型的输入
pPasswordEchoOnEditLineEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit)
模式表格:
Constant | 中文意思 | Description |
---|---|---|
QLineEdit.Normal | 输入时显示字符。这是默认值 | Display characters as they are entered. This is the default. |
QLineEdit.NoEcho | 不显示任何内容。这可能适用于密码,即使密码的长度也应保密 | Do not display anything. This may be appropriate for passwords where even the length of the password should be kept secret. |
QLineEdit.Password | 显示平台相关的密码掩码字符,而不是实际输入的字符 | Display platform-dependent password mask characters instead of the characters actually entered. |
QLineEdit.PasswordEchoOnEdit | 编辑时显示输入的字符,否则显示大圆点。再次编辑会删除之前的内容 | Display characters as they are entered while editing otherwise display characters as with Password . |
QLineEdit.Password
效果:
15. setClearButtonEnabled()
代码:
Lobject.setClearButtonEnabled(bool) # bool为True,或者False(默认)
17.setCompleter()
设置行编辑控件补全模板
self.list = ["C","C++","Java","Python","JavaScript","C#","Swift","go","Ruby","Lua","PHP"]
self.completer = QCompleter(self.list)
self.lineEdit.setCompleter(self.completer)
参考
.
.
.
.
.
.
.
.
.
更多推荐
所有评论(0)