6.5 QLineEdit文字編輯,游標操作和常用訊號
阿新 • • 發佈:2022-03-27
一、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_())