一、LineEdit簡介
LineEdit是PyQt5中很重要的一個控件,其實,LineEdit也是一個很基本的控件,它允許我們編輯一行文本。在窗口程序開發中,我們通常用於收集用戶輸入的信息,比如用戶名、密碼等文本信息。
二、LineEdit的特性
LineEdit控件支持以下幾種常見的功能,可以滿足我們的實際需求:
- 獲取文本信息
- 設置默認值
- 限制輸入範圍
- 實時校驗輸入的內容
- 高亮顯示匹配的文本
- 撤銷、重做等編輯操作
三、使用LineEdit
在使用LineEdit之前,我們需要掌握一些基本的方法,來實現我們的需求。
1、獲取文本信息
我們可以使用text()方法來獲取LineEdit中的文本信息。
from PyQt5.QtWidgets import QLineEdit, QApplication
from PyQt5.QtGui import QIntValidator
import sys
app = QApplication(sys.argv)
lineEdit = QLineEdit("默認值")
lineEdit.show()
sys.exit(app.exec_())
2、設置默認值
我們可以使用setText()方法來設置LineEdit的默認值。
from PyQt5.QtWidgets import QLineEdit, QApplication
from PyQt5.QtGui import QIntValidator
import sys
app = QApplication(sys.argv)
lineEdit = QLineEdit()
lineEdit.setText("默認值")
lineEdit.show()
sys.exit(app.exec_())
3、限制輸入範圍
當我們需要限制用戶輸入的範圍時,我們可以使用QIntValidator()。它可以限制輸入的只能是整數,並且限制範圍在0到999之間。
from PyQt5.QtWidgets import QLineEdit, QApplication
from PyQt5.QtGui import QIntValidator
import sys
app = QApplication(sys.argv)
lineEdit = QLineEdit()
intValidator = QIntValidator()
intValidator.setBottom(0)
intValidator.setTop(999)
lineEdit.setValidator(intValidator)
lineEdit.show()
sys.exit(app.exec_())
4、實時校驗輸入的內容
我們可以使用textChanged信號來實時校驗用戶輸入的內容。比如,當用戶輸入的內容不是一個合法的IP地址時,將LineEdit背景設置為紅色。
from PyQt5.QtWidgets import QLineEdit, QApplication
from PyQt5.QtGui import QIntValidator, QRegExpValidator, QPalette
from PyQt5.QtCore import QRegExp
import sys
app = QApplication(sys.argv)
lineEdit = QLineEdit()
lineEdit.setPlaceholderText("請輸入IP地址")
lineEdit.show()
ipRegExp = QRegExp("^(([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])$")
ipValidator = QRegExpValidator(ipRegExp)
lineEdit.setValidator(ipValidator)
palette = QPalette()
palette.setColor(QPalette.Base, Qt.red)
lineEdit.setPalette(palette)
def validate():
if lineEdit.hasAcceptableInput():
lineEdit.setPalette(QPalette())
else:
lineEdit.setPalette(palette)
lineEdit.textChanged.connect(validate)
sys.exit(app.exec_())
5、高亮顯示匹配的文本
我們可以使用textChanged信號來高亮顯示LineEdit中已經匹配的文本。比如,輸入「hello World」時,將Word高亮顯示。
from PyQt5.QtWidgets import QLineEdit, QApplication
from PyQt5.QtGui import QIntValidator, QRegExpValidator, QPalette
from PyQt5.QtCore import QRegExp, Qt
import sys
app = QApplication(sys.argv)
lineEdit = QLineEdit()
lineEdit.show()
regExp = QRegExp("World")
regExpValidator = QRegExpValidator(regExp)
lineEdit.setValidator(regExpValidator)
palette = QPalette()
palette.setColor(QPalette.Text, Qt.red)
lineEdit.setPalette(palette)
def highlight():
text = lineEdit.text()
pos = regExp.indexIn(text)
if pos == -1:
lineEdit.setPalette(QPalette())
else:
cursor = lineEdit.cursor()
cursor.setPosition(pos)
cursor.movePosition(QTextCursor.EndOfWord, QTextCursor.KeepAnchor)
lineEdit.setTextCursor(cursor)
lineEdit.setPalette(palette)
lineEdit.textChanged.connect(highlight)
sys.exit(app.exec_())
6、編輯操作
我們可以使用QTextEdit的撤銷、重做等編輯操作。
from PyQt5.QtWidgets import QLineEdit, QApplication
from PyQt5.QtGui import QIntValidator, QRegExpValidator, QPalette
from PyQt5.QtCore import QRegExp, Qt
import sys
app = QApplication(sys.argv)
lineEdit = QLineEdit()
lineEdit.show()
def undo():
lineEdit.undo()
def redo():
lineEdit.redo()
def copy():
lineEdit.copy()
def cut():
lineEdit.cut()
def paste():
lineEdit.paste()
undoAction = QAction("撤銷", app)
undoAction.setShortcut(QKeySequence.Undo)
undoAction.triggered.connect(undo)
app.addAction(undoAction)
redoAction = QAction("重做", app)
redoAction.setShortcut(QKeySequence.Redo)
redoAction.triggered.connect(redo)
app.addAction(redoAction)
copyAction = QAction("複製", app)
copyAction.setShortcut(QKeySequence.Copy)
copyAction.triggered.connect(copy)
app.addAction(copyAction)
cutAction = QAction("剪切", app)
cutAction.setShortcut(QKeySequence.Cut)
cutAction.triggered.connect(cut)
app.addAction(cutAction)
pasteAction = QAction("粘貼", app)
pasteAction.setShortcut(QKeySequence.Paste)
pasteAction.triggered.connect(paste)
app.addAction(pasteAction)
sys.exit(app.exec_())
原創文章,作者:HHVQW,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/332501.html