PyQt5系列教程(28): QLineEdit 2
这期我们继续介绍一下文本输入栏(QLineEdit),上期我们总体介绍了下QLineEdit,同时做了一个相关的演示。
整个QLineEdit的介绍,主要分为以下几章:
1. 常用属性、信号、函数介绍及举例
2. 密码的输入表示
3. 文本输入栏的自动补全
密码的输入和文本输入栏的自动补全内容展开较多,需要单独成章。还有一些简单的在视频中没有涉及到的小例子将于本章演示。
公用类型
QLineEdit.ActionPosition
描述如何显示加入到输入框中的action部件。
QLineEdit.EchoMode
描述输入框如何显示其内容。
举个小例子吧
主要是针对ActionPosition举例,EchoMode的例子在下章。
这个例子当中,我们对拼写的单词进行了检查,发现计算机能够猜测出我们可能拼写错误的单词,并给出拼写建议。
单词拼写检查的代码来源互联网(感谢原作者): Python写一个简洁拼写检查器 - CSDN博客
class Line(QDialog):
def Ui(self):
self.line = QLineEdit(self)
self.line.move(20,20)
action = QAction(self)
action.setIcon(QIcon('check.ico'))
action.triggered.connect(self.Check)
self.line.addAction(action,QLineEdit.TrailingPosition)
def Check(self):
word = self.line.text()
if correct(word) != word:
QMessageBox.information(self,'提示信息','你或许想要表达的单词是:'+correct(word))
else:
QMessageBox.information(self,'提示信息','你填写的单词是:'+word)
需要注意的是correct()属于自定义拼写检查模块中函数,这个不是本章的重点,具体的内容请自行看源码。
action = QAction(self)
action.setIcon(QIcon('check.ico'))
action.triggered.connect(self.Check)
新建一个QAction对象并设定它的图标同时在这个QAction对象被激活后调用Check()槽函数。
self.line.addAction(action,QLineEdit.TrailingPosition)
这句话是对QAction对象的位置进行设定。在例子中它的位置是在右边。
话说QAction是啥?QAction使用菜单栏,工具栏或自定义键盘快捷方式执行操作的抽象,我个人理解就是一种动作、行为。
Qt.LeftToRight、Qt.RightToLeft是什么意思呢?
它指定了Qt布局和文本处理的方向。
对于某些语言,从右到左布局是必需的,特别是 阿拉伯语和希伯来语 。
LayoutDirectionAuto有两个用途。 当与小部件和布局一起使用时,它将暗示使用在父小部件或QApplication上设置的布局方向。 这与QWidget. unsetLayoutDirection()具有相同的效果。
当LayoutDirectionAuto与文本布局结合使用时,它将暗示文本的方向性取决于要展开的字符串内容。
常用接口
一些常用接口的举例
- QLineEdit.text():返回输入框的当前文本。
- QLineEdit.addAction(Action,QLineEdit.ActionPosition):添加动作到文本输入栏,上面已经举过例子了。
- QLineEdit.setAlignment(Qt.Alignment flag):属性保存了输入框的对齐方式(水平和垂直方向。这个知识点在
有过介绍,详情请点击。
- QLineEdit.setCompleter() :输入栏的自动补全就是靠这个实现的,下下章我们讲解。
- QLineEdit.deselect() :取消选中任何已选中的文本。
- QLineEdit.displayText():返回显示的文本。默认值为一个空字符串。
- 如果echoMode是Normal,和text()返回的一样;如果EchoMode是Password或PasswordEchoOnEdit,会返回平台相关的密码掩码字符;如果EchoMode是NoEcho,返回一个空字符串””。
- QLineEdit.selectedText():返回选中的的文本。如果没有选中,返回一个空字符串。默认为一个空字符串。
- QLineEdit.setCursorPosition(QLineEdit.cursorPosition):设置输入框当前光标的位置。
- QLineEdit.setMaxLength(int):此属性包含文本的最大允许长度。如果文本太长,将从限制的位置截断。默认值为32767。
- QLineEdit.setReadOnly(bool):此属性保存输入框是否为只读。在只读模式下,用户仍然可以将文本复制到剪贴板,但不能编辑它,且不显示光标。
- QLineEdit.setSelection(int start, int length) :从位置start选择文本为length个字符,允许负长度。我们一启动程序是否设置setSelection的,效果如下:
- QLineEdit.setValidator():设置输入框的验证器,将限制任意可能输入的文本。我们在
有过介绍,详情请点击。
- QLineEdit.setPlaceholderText(str):该属性包含行编辑的占位符文本。只要行编辑为空,设置此属性将使行编辑显示一个灰色的占位符文本。
通常情况下,即使具有焦点,空行编辑也会显示占位符文本。但是,如果内容是水平居中的,则行编辑具有焦点时,占位符文本不会显示在光标下方。默认情况下,该属性包含一个空字符串。
- QLineEdit.isClearButtonEnabled(bool) :是否设置清除内容的按钮。
- QLineEdit.setInputMask():设置掩码,效果就是我们演示视频中的License输入。
下表列出了可在一个输入掩码中使用的字符。 空格字符是空格的默认字符,对于允许但不需要字符的情况需要。
掩码由掩码字符和分隔符字符串组成,后面可以跟一个分号和用于空白的字符,空白字符在编辑后总是从文本中删除。
例如:
效果就是下面这个样子的:
信号
- selectionChanged() :只要选择改变这个信号就会被发射。
- cursorPositionChanged(int old, int new) :只要光标移动,这个信号就会发射。前面的位置old,新的位置是new。
- editingFinished():按下返回或回车键或线条编辑失去焦点时发出此信号。
- returnPressed():按下返回或回车键时发出此信号。
- textChanged(str):只要文字发生变化就会发出此信号。文本参数是新文本。与textEdited()不同,当通过调用setText()以编程方式更改文本时,也会发出此信号。
- textEdited(str) :无论何时编辑文本都会发出此信号。文本参数是新文本。与textChanged()不同,当以编程方式更改文本时,不会发出此信号,例如通过调用setText()。
我们以editingFinished()为例,视频演示中主要也用到了这个信号发射,如果完成相应的内容在最后的一栏进行检测。
self.line = QLineEdit(self)
lb = QLabel('IP地址',self)
self.line.editingFinished.connect(self.Action)
self.line.setInputMask('000.000.000.000;_')
def Action(self):