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


文章目录

  • 2020 PyQt5 控件内置信号与函数汇总(1):QLineEdit内置信号与函数
    • 0.继承关系
    • 1. QLineEdit内置信号
      • 1.1 textChanged 信号
      • 1.2 textEdited 信号
      • 1.3 returnPressed 信号
      • 1.4 selectionChanged 信号
      • 1.5 editingFinished 信号
      • 1.6 cursorPositionChanged 信号
    • 2. 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)


参考

  • Qt官网 QLineEdit
  • PyQt官网 QLineEdit

.

.

.

.

.

.

.

.

.

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

  1. python PyQt5中文教程☞【第八节】PyQt5控件(II)

    引用文章:http://code.py40.com/pyqt5/ 在这里我们将继续介绍PyQt5控件.我们将介绍QPixmap.QLineEdit QSplitter,QComboBox. QPixm ...

  2. 控件必须放在具有 runat=server 的窗体标记内错误的解决方法

    页面需要一个导出到Excel的功能,不想再次查询数据,想直接输出一个div的里面的内容,可以总报错,尝试了很多方法不行,总提示,一个隐藏控件必须放在具有 runat=server 的窗体标记内&quo ...

  3. PyQt5学习笔记- PyQt5控件介绍

    PyQt5控件介绍 一.控件的概念 二.控件结构继承图 一.控件的概念 一个程序界面上的各个独立的元素(一块矩形区域) 具备不同的功能:用户点击.接受用户输入.展示内容.存放其他控件 初始常用控件:按 ...

  4. python制作好看的界面_【一点资讯】Python界面如何漂亮的展示树形结构,PyQt5控件之QTreeWidget详解 www.yidianzixun.com...

    前面内容,我们介绍了关于PyQt5的一些常用高级控件的使用,为了更好的便于大家理解,我们通过一些案例进行了讲解.用户接口 用Python将电子表格Excel展示在界面中,PyQt5之QTableWid ...

  5. Qt Designer+PyQt5 控件使用经验(不定时随缘更新)

    Qt Designer 灵活使用布局 使用ctrl键多选多个控件,可为选中的控件添加布局: 也可在上侧工具栏找到快捷图标: 以两个控件使用垂直布局(VerticalLayout)为例: 4个Margi ...

  6. PyQt5 控件学习(一个一个学习之QObject)

    总的学习路线: 首先我们要知道控件之间的继承结构,并按照它去学习: 下面是基类的继承图: 所以,我们首先学习的是QObject 和 QWidget 这两个,然后再学其他的. QObject 类: 1, ...

  7. GridView”的控件 必须放在具有 runat=server 的窗体标记内 “错误提示”

    在做导出数据到EXCEL程序中,出现了错误提示:类型"GridView"的控件"GridView1"必须放在具有 runat=server 的窗体标记 解决办法 ...

  8. pyqt5——控件1

    控件1 控件就像是应用这座房子的一块块砖.PyQt5有很多的控件,比如按钮,单选框,滑动条,复选框等等.在本章,我们将介绍一些很有用的控件:QCheckBox,ToggleButton,QSlider ...

  9. 控件必须放在具有 runat=server 的窗体标记内 错误解决解决方法

    今天在开发的时候遇到了一个问题,情况大致是这样的:我的页面需要一个导出到Excel的功能,于是我便利用GridView控件的RenderControl()来输出数据,可是在运行的时候却遇到了" ...

最新文章

  1. Matlab与数据结构 -- 如何获取完整文件名
  2. 爬虫不得不学之 JavaScript 函数对象篇
  3. 阿里云产品搭建web应用梳理
  4. 使用tracee编写规则追踪系统安全事件
  5. nginx重新安装 引起的问题
  6. JQuery上传插件Uploadify使用详解
  7. php获取网页内容方法总结
  8. PHP地图规划骑行路径,骑行路线规划
  9. 固定编辑框输入上限和下限_两种截然不同的汉字输入场景
  10. python培训价目表-python培训费用多少?
  11. 【MB051】炫酷BAT代码 ① 装神系列→可参考
  12. 网易云音乐 网络错误 linux,Linux版网易云音乐播放音乐时无限显示“网络错误”的解决办法...
  13. 企业oa系统是什么,有什么好用的办公软件推荐?
  14. FSD062服务器电源维修,电磁炉开关电源FSD200维修经验
  15. 有一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中。——C与C++实现
  16. 蒙城县有4000多年,夏为禹贡豫州之域
  17. Blender2.8入门教程(1): 物体操作、物体编辑、修改器Modifier
  18. 戒梭先生:随笔|合格交易者要达到的三个境界
  19. 【原创-更新完毕】|日历拼图游戏的解决方案(C语言-进阶应用)-详解连载2
  20. 使用aspose进行word转pdf(liunx适用)

热门文章

  1. 大学期间最浪费时间的十件事
  2. Windows自带光驱将多个镜像文件加载到同一个光驱下
  3. 历史上最好用的日程管理软件,完全免费
  4. 中国电子信息产业发展研究院院长张立:打造我国主导的开源价值链
  5. 全球与中国电梯光幕市场现状及未来发展趋势(2022)
  6. 安全购物--快速添加桌面淘宝网快捷方式(win7版)
  7. 56次全国计算机考试报名,关于第56次全国计算机等级考试报名的通知
  8. komodo edit 支持java么_Komodo Edit for Mac(多语言集成开发环境)
  9. mysql之 存在则修改,不存在则插入的sql(inert if not exist,else update)语法
  10. 变频器零速满转矩的理解