千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > PyQt5LineEdit控件详解

PyQt5LineEdit控件详解

来源:千锋教育
发布人:xqq
时间: 2023-11-25 14:34:36 1700894076

一、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_())

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT