1. 程式人生 > 其它 >6.5 QLineEdit文字編輯,游標操作和常用訊號

6.5 QLineEdit文字編輯,游標操作和常用訊號

一、QLineEdit文字編輯,游標操作和常用訊號

1.基本知識

  • 直接操作文字,通過游標操作以及文編髮生變化時會發出哪些訊號。
  • 選中字元
# False表示只移動不選中,True表示選中加移動
# cursorBackward
# cursorForward
# cursorWordBackward  # 按照單詞長度移動,不用輸入步長,以空格為間隔
# cursorWordForward
# home
# end
  • 視窗右鍵功能
# backspace()  退格
# del_()  刪除
# clear()  清空
# copy()  賦值
# cut()  剪下
# paste()  貼上
# isUndoAvailable()  undo()  撤銷
# isRedoAvailable()  redo()  重做
# setDragEnabled()  拖放
  • 文字選中方法
# setSelection
# 放在led的槽函式中測試
# led.setSelection(1,2)  # 選中指定區域文字
# led.selectAll()  # 選中所有文字
# led.deselect()  # 取消選中文字
# led.hasSelectedText()  # 是否有選中文字
# led.selectedText()  # 獲取選中文字
# led.selectionStart() # 選中的開始位置
# led.selectionEnd()  # 選中的結束位置
# led.selectionLength() # 選中的文字長度
  • 可用訊號
# textEdited()  # 文字編輯時發出的訊號
# textChanged()  # 文字發生改變時
# returnPressed()  # 回車鍵被按下時
# editingFinished()  # 結束編輯的時候
# cursorPositionChanged()  # 游標位置發生改變時
# selectionChanged()  # 選中的文字發生改變的時候

2.程式碼

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

window = QWidget()
window.setWindowTitle('QLineEdit常見方法和訊號 - PyQt5中文網')
window.resize(600, 450)
window.move(300, 300)

led = QLineEdit(window)
led.setText('單行文字框')
led.move(100, 100)

btn = QPushButton('複製', window)
btn.move(100, 130)


def cpoy_btn() :
    print(led.isModified()) #判斷是否處於別修改狀態 修改了是True 否則為False
    led.setModified(False)


btn.pressed.connect(cpoy_btn)

led1 = QLineEdit(window)
led1.setText('游標位置控制方法')
led1.move(250, 100)

btn1 = QPushButton('按鈕', window)
btn1.move(250, 130)


# False表示只移動不選中,True表示選中加移動
# cursorBackward
# cursorForward
# cursorWordBackward  # 按照單詞長度移動,不用輸入步長,以空格為間隔
# cursorWordForward
# home
# end
def cur_move() :
    #led1.cursorBackward(False,2) #FALSE表示游標僅僅移動不選中
    #led1.cursorBackward(True,2) #True表示游標即選中又移動
    # led1.home(True)           #游標移動到最前方,全選 False表示僅僅游標移動到最前方
    #led1.setCursorPosition(len(led1.text()/2))# 按照單詞長度移動,不用輸入步長,以空格為間隔
    # led1.setCursorPosition(3)
    # led1.cursorWordForward(True) #按照空格間隔移動
    led1.setFocus()
    #led1.setSelection(1, 4)


btn1.pressed.connect(cur_move)

# 文字對其方式設定
led2 = QLineEdit(window)
led2.setText('游標位置控制方法')
led2.move(100, 200)
led2.resize(200, 200)
led2.setTextMargins(0, 10, 20, 0)  # 左上右下
led2.setAlignment(Qt.AlignRight | Qt.AlignTop) #按照列舉值 設定位置

# 常見編輯功能  右鍵就有這些功能
# backspace()  退格
# del_()  刪除
# clear()  清空
# copy()  賦值
# cut()  剪下
# paste()  貼上
# isUndoAvailable()  undo()  撤銷
# isRedoAvailable()  redo()  重做
# setDragEnabled()  拖放


# 文字選中方法
# setSelection
# 放在led的槽函式中測試
# led.setSelection(1,2)  # 選中指定區域文字
# led.selectAll()  # 選中所有文字
# led.deselect()  # 取消選中文字
# led.hasSelectedText()  # 是否有選中文字
# led.selectedText()  # 獲取選中文字
# led.selectionStart() # 選中的開始位置
# led.selectionEnd()  # 選中的結束位置
# led.selectionLength() # 選中的文字長度


# 可用訊號

# textEdited()  # 文字編輯時發出的訊號
# textChanged()  # 文字發生改變時
# returnPressed()  # 回車鍵被按下時
# editingFinished()  # 結束編輯的時候
# cursorPositionChanged()  # 游標位置發生改變時
# selectionChanged()  # 選中的文字發生改變的時候
led3 = QLineEdit(window)
led3.move(350, 200)
led3.resize(150, 60)

led4 = QLineEdit(window)
led4.move(350, 270)
led4.resize(150, 60)
led3.textEdited.connect(lambda val:print('文字編輯時發出的訊號',val))  # 使用者在前段編輯的時候觸發
led3.textChanged.connect(lambda val:print('文字發生改變時',val))  # 前後端有任何變化都會觸發
led3.setText('123')
led3.returnPressed.connect(lambda :print('123',led4.setFocus())) #按下ENTER就會發出訊號
led3.editingFinished.connect(lambda : print('結束編輯的時候'))#結束標記 就會發出訊號

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

3.效果