2020 PyQt5控件内置信号与函数汇总(1):QLineEdit内置信号与函数
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内置信号与函数相关推荐
- python PyQt5中文教程☞【第八节】PyQt5控件(II)
引用文章:http://code.py40.com/pyqt5/ 在这里我们将继续介绍PyQt5控件.我们将介绍QPixmap.QLineEdit QSplitter,QComboBox. QPixm ...
- 控件必须放在具有 runat=server 的窗体标记内错误的解决方法
页面需要一个导出到Excel的功能,不想再次查询数据,想直接输出一个div的里面的内容,可以总报错,尝试了很多方法不行,总提示,一个隐藏控件必须放在具有 runat=server 的窗体标记内&quo ...
- PyQt5学习笔记- PyQt5控件介绍
PyQt5控件介绍 一.控件的概念 二.控件结构继承图 一.控件的概念 一个程序界面上的各个独立的元素(一块矩形区域) 具备不同的功能:用户点击.接受用户输入.展示内容.存放其他控件 初始常用控件:按 ...
- python制作好看的界面_【一点资讯】Python界面如何漂亮的展示树形结构,PyQt5控件之QTreeWidget详解 www.yidianzixun.com...
前面内容,我们介绍了关于PyQt5的一些常用高级控件的使用,为了更好的便于大家理解,我们通过一些案例进行了讲解.用户接口 用Python将电子表格Excel展示在界面中,PyQt5之QTableWid ...
- Qt Designer+PyQt5 控件使用经验(不定时随缘更新)
Qt Designer 灵活使用布局 使用ctrl键多选多个控件,可为选中的控件添加布局: 也可在上侧工具栏找到快捷图标: 以两个控件使用垂直布局(VerticalLayout)为例: 4个Margi ...
- PyQt5 控件学习(一个一个学习之QObject)
总的学习路线: 首先我们要知道控件之间的继承结构,并按照它去学习: 下面是基类的继承图: 所以,我们首先学习的是QObject 和 QWidget 这两个,然后再学其他的. QObject 类: 1, ...
- GridView”的控件 必须放在具有 runat=server 的窗体标记内 “错误提示”
在做导出数据到EXCEL程序中,出现了错误提示:类型"GridView"的控件"GridView1"必须放在具有 runat=server 的窗体标记 解决办法 ...
- pyqt5——控件1
控件1 控件就像是应用这座房子的一块块砖.PyQt5有很多的控件,比如按钮,单选框,滑动条,复选框等等.在本章,我们将介绍一些很有用的控件:QCheckBox,ToggleButton,QSlider ...
- 控件必须放在具有 runat=server 的窗体标记内 错误解决解决方法
今天在开发的时候遇到了一个问题,情况大致是这样的:我的页面需要一个导出到Excel的功能,于是我便利用GridView控件的RenderControl()来输出数据,可是在运行的时候却遇到了" ...
最新文章
- Matlab与数据结构 -- 如何获取完整文件名
- 爬虫不得不学之 JavaScript 函数对象篇
- 阿里云产品搭建web应用梳理
- 使用tracee编写规则追踪系统安全事件
- nginx重新安装 引起的问题
- JQuery上传插件Uploadify使用详解
- php获取网页内容方法总结
- PHP地图规划骑行路径,骑行路线规划
- 固定编辑框输入上限和下限_两种截然不同的汉字输入场景
- python培训价目表-python培训费用多少?
- 【MB051】炫酷BAT代码 ① 装神系列→可参考
- 网易云音乐 网络错误 linux,Linux版网易云音乐播放音乐时无限显示“网络错误”的解决办法...
- 企业oa系统是什么,有什么好用的办公软件推荐?
- FSD062服务器电源维修,电磁炉开关电源FSD200维修经验
- 有一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中。——C与C++实现
- 蒙城县有4000多年,夏为禹贡豫州之域
- Blender2.8入门教程(1): 物体操作、物体编辑、修改器Modifier
- 戒梭先生:随笔|合格交易者要达到的三个境界
- 【原创-更新完毕】|日历拼图游戏的解决方案(C语言-进阶应用)-详解连载2
- 使用aspose进行word转pdf(liunx适用)
热门文章
- 大学期间最浪费时间的十件事
- Windows自带光驱将多个镜像文件加载到同一个光驱下
- 历史上最好用的日程管理软件,完全免费
- 中国电子信息产业发展研究院院长张立:打造我国主导的开源价值链
- 全球与中国电梯光幕市场现状及未来发展趋势(2022)
- 安全购物--快速添加桌面淘宝网快捷方式(win7版)
- 56次全国计算机考试报名,关于第56次全国计算机等级考试报名的通知
- komodo edit 支持java么_Komodo Edit for Mac(多语言集成开发环境)
- mysql之 存在则修改,不存在则插入的sql(inert if not exist,else update)语法
- 变频器零速满转矩的理解