pyqt5-QLineEdit文本框

1、介绍

单行文本框组件。

class QLineEdit(QWidget):
    """
    QLineEdit(parent: typing.Optional[QWidget] = None)
    QLineEdit(contents: str, parent: typing.Optional[QWidget] = None)
    """

2、方法

2.1 文本读写

setText(self, a0: str)
  • 设置文本,相当于用户直接输入框输入
insert(self, a0: str)
  • 在光标处插入文本
text(self) -> str
  • 获取文本,即用户输入的
setReadOnly(self, a0: bool) 
  • 设置输入框是否只读,即不允许编辑。参数类型为bool
  • 当设置为只读,将无法选中输入框
isReadOnly(self) -> bool
  • 获取是否只读,返回类型bool
setPlaceholderText(self, a0: str)
  • 设置占位符提示文本,参数类型是str
  • 其作用是当文本框输入文本为空时,显示用于提示
placeholderText(self) -> str
  • 获取占位符提示文本,返回类型str
clear(self)
  • 将文本框中所有的输入文本内容清除

2.2 键盘操作

copy(self)
  • 复制选中的内容,如果没有选中内容,则不进行复制。剪切板中仍然是上一复制的内容
  • 注意,当鼠标点击输入框外的组件时,丢失选中内容,无法赋值。这时如果想赋值,必须使用方法setSelection或selectAll进行先选中,再操作
cut(self)
  • 剪切选中的内容,如果没有选中内容,则不进行剪切。剪切板中仍然是上一复制的内容
paste(self) 
  • 粘贴。无参无返回
  • 作用是:鼠标在文本框中的光标处插入剪切板中存储的文本。即使该文本框未聚焦,也会有一个光标位置可以使用,默认是末尾处
  • 与键盘ctrl+v存在差异,如果是选中某部分文本,ctrl+v的效果是直接替换,而paste方法是在光标处插入
del_(self)
  • 相当于键盘的delete按钮,即删除光标所在位置的后一个字符
selectAll(self)
  • 选择全部

2.3 选择

selectedText(self) -> str
  • 获取选中文本,返回类型str,如果没有选中返回空字符串””
  • 注意当前文本框必须聚焦,如果脱离点击了其他组件,选中必然是””
setSelection(self, a0: int, a1: int)
  • 设置选中范围,两个参数都是int类型,分别表示起止索引,从0开始,超出不会报错,而是包含末端在内
selectionEnd(self) -> int
  • 被选中部分的结束索引,没有选中时,返回-1
selectionLength(self) -> int 
  • 被选中部分的长度,是实际长度,如果没有选中,返回0
selectionStart(self) -> int
  • 被选中部分的开始索引,没有选中时,返回-1
deselect(self)
  • 取消选中
hasSelectedText(self) -> bool 
  • 判断是否有选中,返回bool

2.4 光标

setCursorPosition(self, a0: int)
  • 设置光标的位置,参数类型为int
  • 一般会在前或后使用setFocus方法聚焦,显示光标位置。当然,不显示,也是会移动的
  • 参数范围是0-len,0表示光标在最开始部分。len表示在最末尾部分。1表示光标在索引为1的字符之前。
  • 参数超出表达范围,不会进行移动光标。之前是在哪就在哪。
setFocus(self)
setFocus(self, reason: Qt.FocusReason)
  • 使输入框聚焦,可以显示光标位置。该方法是QWidget类的
  • 默认的话,鼠标点击其他组件,会使输入框组件丢失焦点,光标不再显示。此时光标是有效的。但如果再次点击输入框,光标会根据点击再次确认,也就是说无法观察中间过程的光标。
cursorPosition(self) -> int
  • 获取光标位置,int类型
  • 参照上面设置时的解释,范围是0-len
setCursorMoveStyle(self, style: Qt.CursorMoveStyle)
  • 设置光标移动的样式

3、事件

returnPressed(self) [signal]
  • enter键或回车键按下,触发事件
cursorPositionChanged(self, a0: int, a1: int) [signal]
  • 光标位置发生改变时触发,a0和a1分别表示变化前后的索引
  • 每次改变都会触发,比如拖动光标选择文本时,会触发多次
  • 组件创建时,光标位置默认为-1,初次点击聚焦,光标位置变为0
  • 点击其它组件,文本框会失去焦点,光标不再显示,此时光标位置不会变化。直接聚焦文本框,光标位置显示原位置。但是手动点击文本框聚焦,会改变光标位置,具体的改变由点击时鼠标位置决定
textEdited(self, a0: str) [signal]
  • 文本直接输入编辑,会触发该事件。并不一定是触发输入字符的次数,输入法一次性输入多个字符但实际只触发一次
  • 键盘按钮粘贴、删除等操作,都会触发事件。触发次数由操作次数决定
  • 调用clear方法,不会触发
  • 调用del_方法,如果光标在末尾,调用方法后未发生改变则不触发。反之则会触发
  • setText方法不会触发,insert方法触发
  • 调用paste方法,会触发
textChanged(self, a0: str) [signal]
  • 文本发生变化触发
selectionChanged(self) [signal]	# 选中部分发生改变
  • 手动选择时,在拖动过程中,会持续触发该事件。
    • 拖动的中间过程,即使拖动速度再快、选择文本字符数再少,也会触发10余次事件,相邻的事件时选中文本可能相同
    • 单方向拖动,相邻事件时选中文本除了相同,也可能跳跃1个字符或多个字符的选中状态
    • 选中过程中停顿,选中文本没有变化,此时只会触发少数几次事件,当继续拖动时,选中文本变化,又会触发少数几次事件。即停顿不会触发任意多次事件
  • 点击其它组件,会导致选中文本变为空字符串,触发该事件
  • setSelection方法,只会触发一次。由setSelection方法设置选中,并不会因为点击其它组件而导致选中文本变为空字符串,也因此不会触发事件
posted @ 2023-07-02 03:08  挖洞404  阅读(556)  评论(0编辑  收藏  举报