文章目录
写在前面
上回写了一下PyQt5的一些入门的内容以及QLabel的使用。这次主要总结一下文本控件(单行:QLineEdit;多行:QTextEdit)的几种方法以及具体实现。
其实这个文本控件,说白了就是控制数据输入输出的控件,下面具体介绍。
QLineEdit控件
主要用于单行文本的输入,有如下的几个常用方法:
-
.setReadOnly(True)
:设置只读文本。 -
.setInputMask('99_9;#')
:设置ASCII掩码,下面详细介绍。 -
.setValidator()
:设置校验器。 -
.setEchoMode()
设置回显模式。 -
.setMaxLength()
:设置文本最大长度。 -
.setAlignment()
:设置输入文本的对齐方式。 -
.setFont()
:设置文本的字体及大小。
回显模式(Echo Mode)
顾名思义,就是在用户键入文本后在GUI界面的现实情况,在PyQt5中QLineEdit控件有如下的四种回显模式。
- Normal:正常,即直接输出用户输入的文本,不做任何处理。
- NoEcho:无回显,即隐藏用户的输入,在Linux的终端中常见。
- Password:密码,以大黑圆点(我起的)显示用户的输入,常用于各类密码的设置。
- PasswordEchoOnEdit:正在编辑状态的密码,即用户用户输入时为Normal模式,停止编辑后变成大黑圆点。
校验器(Validator)
用于限制用户的输入,如限制只能输入整数、浮点数或规则字符串(支持正则表达式,需要导入QRegExp
模块)。
- 校验整数:
QIntValidator()
以及.setRange()
,后者设置数字范围 - 校验浮点数:
QDoubleValidator()
和.setRange()
、.setNotation()
、.setDecimals()
,后者分别设置数字范围、表示法及精度 - 校验数字+字母:
QRegExpValidator()
,.setRegExp()
使用正则表达式,例如仅允许用户输入数字及字母,可记为:QRegExp('[a-zA-z0-9+$]')
ASCII掩码
用ASCII掩码限制QLineEdit控件的输入(下面的内容来自李宁老师的PyQt5课程的资料,有兴趣可以从B站评论区下载)。以下是一些掩码及其对应的内容。
A ASCII字母字符是必须输入的(A-Z、a-z)
a ASCII字母字符是允许输入的,但不是必需的(A-Z、a-z)
N ASCII字母字符是必须输入的(A-Z、a-z、0-9)
n ASII字母字符是允许输入的,但不是必需的(A-Z、a-z、0-9)
X 任何字符都是必须输入的
x 任何字符都是允许输入的,但不是必需的
9 ASCII数字字符是必须输入的(0-9)
0 ASCII数字字符是允许输入的,但不是必需的(0-9)
D ASCII数字字符是必须输入的(1-9)
d ASCII数字字符是允许输入的,但不是必需的(1-9)
# ASCI数字字符或加减符号是允许输入的,但不是必需的
H 十六进制格式字符是必须输入的(A-F、a-f、0-9)
h 十六进制格式字符是允许输入的,但不是必需的(A-F、a-f、0-9)
B 二进制格式字符是必须输入的(0,1)
b 二进制格式字符是允许输入的,但不是必需的(0,1)
> 所有的字母字符都大写
< 所有的字母字符都小写
! 关闭大小写转换
\ 使用"\"转义上面列出的字符
QTextEdit控件
主要用于多行文本的输入和输出,支持HTML标签语法,不过输出的一整段HTML是完整的HTML文件,包含头(DOCTYPE)和内容(<body></body>)。
-
.setPlainText()
:显示普通文本。 -
.toPlainText()
:读取已输入的文本到Python控制台。 -
.setHtml()
:显示带HTML标签的文本。 -
.toHtml()
:读取已输入的HTML标签(一个完整HTML文件的全部内容)到Python控制台。
其他不常用的一些文本控件
QSpinBox控件
专门用于输入输出整数的控件,还可以使用二进制、十六进制显示。其实严格意义上说这个控件应该叫计数器控件。
QDoubleSpinBox控件
专门用于输入输出浮点数的控件。
这里不进行详细的代码介绍,感兴趣的话可以参看文献[1]。
小结
本文介绍了两种主要的文本控件,以及一些不常用的文本控件,这些控件用于在GUI中进行数据的输入和输出的控制,是常用的控件类型,需要熟悉一些主要的方法及其调用。
主要参考
[1] 王维波, 栗宝鹃, 张晓东. Python Qt GUI与数据可视化编程. 人民邮电出版社. 2019.9.
[2] 网易云课程:《PyQt5教程》. 李宁.