PyQt中,会经常对QLineEdit状态是否编辑进行判断,isModified函数用来查看文本编辑状态,setModified设置文本编辑状态。还介绍了一些控制光标位置得API。最后介绍的是setContentsMargins来设置文本框的边界。

文本状态修改isModified

  • 查看文本编辑状态: isModified()
  • 设置文本编辑状态:setModified()
import sys
from PyQt5.Qt import *

# 做成活动模块,修改方便
# 1、创建应用程序,可以传递参数给app,通过命令行输入参数
app = QApplication(sys.argv)
window = QWidget()

window.setWindowTitle("文本的设置与获取---案例")
window.resize(500, 500)
le_a = QLineEdit(window)
le_a.move(100, 200)
le_b = QLineEdit(window)
le_b.move(100, 300)

copy_btn = QPushButton(window)
copy_btn.move(100, 400)
copy_btn.setText("QEditLine是否修改")


# 监听按钮事件都可
# pressed是监听鼠标按下,clicked是监听鼠标按下并松开那一刻才会发射信号
def copy_text():
    print(le_b.isModified())
    # 将文本框内容设置为未修改状态
    le_b.setModified(False)


copy_btn.clicked.connect(copy_text)

window.show()
sys.exit(app.exec_())

设置文本框的修改状态

光标位置控制

选择性的移动光标位置、是否携带选中效果。

  • cursorBackward(bool mark, int steps = 1) :向后(左)移动steps个字符

    mark:True,带选中效果

    mark:False,不带选中效果

  • cursorForward(bool mark, int steps = 1) :向前(右)移动steps个字符

    mark:True,带选中效果

    mark:False,不带选中效果

  • cursorWordBackward(bool mark) :向后(左)移动1个单词长度(单词用空格隔开的)

    mark:True,带选中效果

    mark:False,不带选中效果

  • cursorWordForward(bool mark):向前(右)移动一个单词长度(单词用空格隔开的)

    mark:True,带选中效果

    mark:False,不带选中效果

  • home(bool):移动到行首

    True:带选中

    False:不带选中

  • end(bool) :移动到行尾
    True:带选中
    False:不带选中

  • setCursorPosition(int) :设置光标位置

  • cursorPosition():获取光标位置

  • cursorPositionAt(const QPoint& pos):获取指定坐标位置对应文本光标位置

cursorBackward的测试效果

import sys
from PyQt5.Qt import *

# 做成活动模块,修改方便
# 1、创建应用程序,可以传递参数给app,通过命令行输入参数
app = QApplication(sys.argv)
window = QWidget()

window.setWindowTitle("功能测试")
window.resize(500, 500)

le = QLineEdit(window)
le.move(100, 100)

btn = QPushButton(window)
btn.setText("按钮")
btn.move(100, 200)


def cusor_move():
    # 属于单行文本编辑器的实例方法
    # 向后移动,即鼠标向左移动
    le.cursorBackward(True, 2)
    le.setFocus()

    # # 像前移动,即鼠标向右移动
    # le.cursorForward(True, 3)
    # # 往后移动一个单词
    # le.cursorWordBackward(True)
    # # 移动到行首
    # le.home(True)
    # # 移动到行尾
    # le.end(True)
    # le.setCursorPosition(len(le.text() / 2))
    # le.setFocus()


btn.clicked.connect(cusor_move)

window.show()
sys.exit(app.exec_())

文本边距设定

  • 设置内容边距,改变整体的区域(我们的可视区域改变) le.setContentsMargins(100, 0, 0, 0)

  • 设置文本间距:le.setTextMargins(100, 0, 0, 0)

  • getTextMargins()

  • setTextMargins(int left, int top, int right,int bottom)

import sys
from PyQt5.Qt import *

# 做成活动模块,修改方便
# 1、创建应用程序,可以传递参数给app,通过命令行输入参数
app = QApplication(sys.argv)
window = QWidget()

window.setWindowTitle("功能测试")
window.resize(500, 500)

le = QLineEdit(window)
le.move(100, 100)
le.resize(300, 300)
le.setTextMargins(100, 0, 0, 0)

btn = QPushButton(window)
btn.setText("按钮")
btn.move(50, 50)


def cusor_move():
    # 属于单行文本编辑器的实例方法
    # 向后移动,即鼠标向左移动
    le.cursorBackward(True, 2)
    le.setFocus()

    # # 像前移动,即鼠标向右移动
    # le.cursorForward(True, 3)
    # # 往后移动一个单词
    # le.cursorWordBackward(True)
    # # 移动到行首
    # le.home(True)
    # # 移动到行尾
    # le.end(True)
    # le.setCursorPosition(len(le.text() / 2))
    # le.setFocus()


btn.clicked.connect(cusor_move)

window.show()
sys.exit(app.exec_())

边界100

对齐方式setAlignment

水平:

  • Qt.AlignLeft
  • Qt.AlignRight
  • Qt.AlignHCenter
  • Qt.AlignJustify

垂直:

  • Qt.AlignTop

  • Qt.AlignBottom

  • Qt.AlignVCenter

  • Qt.AlignBaseline

垂直和水平都居中:Qt.AlignCenter , 相当于Qt.AlignHCenter | Qt.AlignVCenter

设置一个文本是水平靠右、垂直方向靠下

le.setAlignment(Qt.AlignRight | Qt.AlignBottom)


版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/QLineEdit43.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!
▶ 站长邮箱 [email protected][email protected] ,如不方便留言可邮件联系。

最后修改:2022 年 10 月 28 日
如果觉得我的文章对你有用,请随意赞赏