2020 PyQt5控件内置信号与函数汇总(1):QLineEdit内置信号与函数

2020 PyQt5 控件内置信号与函数汇总(1):QLineEdit内置信号与函数



0.继承关系

控件(Classes)QLineEdit
qimport:PyQt5.QtWidgets.QLineEdit
继承自(Inherits):QWidget

一般情况下,继承的子类拥有父类的所有函数

.


1. QLineEdit内置信号

表一 信号汇总表

信号说明
1textChanged当修改文本内容时,这个信号会被发射
2textEdited当文本被编辑时,就会发射这个信号
3returnPressed光标在行编辑框内时,点击回车键即发射信号
4selectionChanged当选择的文本内容改变了,这个信号就会被发射
5editingFinished当按返回或者回车键时,或者行编辑失去焦点时,这个信号会被发射
6cursorPositionChanged当焦点,即光标位置改变就发射信号
7inputRejected当用户输入不合法字符时,将发出此信号。前提要 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 时

实验结果:

image-20200726171754621

共触发 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 后按回车键,结果如下

image-20200727210553366

由结果可以验证回车键产生的 换行符'\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内置函数

表二 函数汇总表

函数说明
1text()返回文本框内容
2setText()设置文本框内容
3setAlignment()按固定值方式对齐文本
4setReadOnly()设置文本框为只读
5setPlaceholderText()设置文本框浮显的文字
6setMaxLength()设置文本框所允许输入的最大字符数
7setInputMask()设置掩码
8setValidator()设置文本框的验证规则
9clear()清除文本框内容
10setEchoMode()设置文本框显示格式
11setDragEnabled()设置文本框是否接受拖动
12selectAll()全选
13cursorPositionAt()返回光标的位置
14selectedText()得到当前被选中的文本
15setClearButtonEnabled()设置当行编辑内容不为空时是否显示清除按钮。
16setFrame( bool设置边框,True 存在边框(默认),False 去掉边框
17setCompleter()设置行编辑控件补全模板

函数详细说明:

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)

image-20200728113725492

效果如上图。当输入字符时,该设置字符串会消失。


6.setMaxLength()

Lobject.setMaxLength(int)# int表明需要一个整型常量或变量

7.setInputMask()

设置输入掩码

Lobject.setInputMask('000.000.000.000;_')
# 这是一个输入 IP 地址的掩码例子,0表明要输入数字,`.`为分隔符

测试结果

image-20200728144430477

可以由下面表格的字符设计输入掩码。

定义输入掩码的字符

掩码字符中文说明Meaning
AASCII字母字符是必须输入的(A-Z,a-z)character of the Letter category required, such as A-Z, a-z.
aASCII字母字符是允许输入的,但不是必须的,一般使用时和A差不多character of the Letter category permitted but not required.
N要求字母或数字类别的字符,例如A-Z,a-z,0-9character 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-9character of the Number category required, e.g 0-9.
0允许数字类别的字符,但不是必需的character of the Number category permitted but not required.
D需数字类别的字符,且必须大于零,例如1-9character of the Number category and larger than zero required, such as 1-9
d允许数字类别的字符,且必须大于零,例如1-9character 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-9Hexadecimal character required. A-F, a-f, 0-9.
h允许使用十六进制字符,但不是必需的Hexadecimal character permitted but not required.
B必须为二进制字符,0-1Binary 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终止输入掩码并将空白字符设置为cTerminates 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)

验证器汇总:

验证器描述
1QIntValidator整型
2QDoubleValidator浮点型
3QRegExpValidator正则表达式(可以包含上面两个)

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)


参考

.

.

.

.

.

.

.

.

.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值