文本框QLineEdit是表单域中最基本的元素,基于文本框的应用有很多,它提供了编辑文本的功能,自带了撤销、重做、剪切、粘贴、拖拽等功能。通过设置,可以置为密码输入框。QLineEdit常用的事件类型如下表所示。
事件类型 |
描述 |
selectionChanged |
只要选择改变了,就会触发事件 |
textChanged |
修改文本内容时,触发事件 |
editingFinished |
在编辑文本结束时,触发事件 |
QLineEdit常用的方法如下表所示。
方法 |
描述 |
setEchoMode() |
设置文本框的显示格式,值为QLineEdit.Normal(默认)时,正常显示所输入的字符,为QLineEdit.Password时,显示与平台相关的密码掩饰字符(如.) |
setPlaceholderText() |
设置在文本框中显示的提示文字 |
setText() |
设置文本框内容 |
text() |
返回文本框的内容 |
setMaxLength() |
允许输入的最大字符数 |
setReadOnly() |
将文本框置为只读 |
setFocus() |
设置焦点 |
setValidator() |
设置文本框的验证器(验证规则),将限制任意可能输入的文本,可用的校验器为QIntValidator:限制输入整数,QDoubleValidator:限制输入浮点数,QRegexpValidator:检查输入是否符合正则表达式 |
程序清单:lineedit.py
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget,
QLineEdit, QFormLayout, QPushButton, QMessageBox
from PyQt5.QtGui import QRegExpValidator
from PyQt5.QtCore import QRegExp
# 继承QWidget
class LineEditWidget(QWidget):
account_edit = None
password_edit = None
text_edit = None
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 表单布局
form = QFormLayout()
# 表达式:字母和数字
reg = QRegExp('[a-zA-Z0-9] $')
# 自定义验证器
account_validator = QRegExpValidator(self)
# 设置表达式
account_validator.setRegExp(reg)
# 账号输入框
self.account_edit = QLineEdit()
self.account_edit.setFixedSize(180, 20)
self.account_edit.setMaxLength(30)
# 设置验证器
self.account_edit.setValidator(account_validator)
form.addRow("账号:", self.account_edit)
# 密码
self.password_edit = QLineEdit()
self.password_edit.setFixedSize(180, 20)
self.password_edit.setEchoMode(QLineEdit.Password)
self.password_edit.setMaxLength(30)
form.addRow("密码:", self.password_edit)
login_btn = QPushButton("登录")
login_btn.clicked.connect(self.login)
form.addWidget(login_btn)
self.setLayout(form)
# 调整窗口大小
self.resize(900, 500)
# 窗口居中
self.center()
# 窗口标题
self.setWindowTitle("文本输入框的应用")
# 显示窗口
self.show()
# 登录按钮处理函数
def login(self):
account = self.account_edit.text()
password = self.password_edit.text()
if account.strip() == "":
QMessageBox.warning(self, "账号为空", "账号不可为空,请输入",
QMessageBox.Ok)
self.account_edit.setFocus()
elif password.strip() == "":
QMessageBox.warning(self, "密码为空", "密码不可为空,请输入",
QMessageBox.Ok)
self.password_edit.setFocus()
else:
QMessageBox.information(self, "登录成功", "恭喜你,登录成功了",
QMessageBox.Ok)
# 实现居中
def center(self):
f = self.frameGeometry()
c = QDesktopWidget().availableGeometry().center()
f.moveCenter(c)
self.move(f.topLeft())
if __name__ == "__main__":
app = QApplication(sys.argv)
w = LineEditWidget()
sys.exit(app.exec_())
运行程序之后,弹出的窗口如下:
好了,单行文本框的内容就说到这了,关注我,下一节更精彩。
码字不易,你的关注和转发是对我最大的鼓励,谢谢!
一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,关注我,你就赚到了。我正在分享Python、前端、Java和App方面的干货了。赶紧来围观啊!!!
#python##程序员##好平台好讲师##桌面##热搜#
,