当前位置: 首页 > news >正文

第六节_PySide6基本窗口控件_单行文本框(QLineEdit)

文章目录

  • 前言
  • 一、单行文本框 QLineEdit 简介
    • 1.继承链关系
    • 2.QLineEdit 是什么?
  • 二、常用函数和信号
    • 1.QLineEdit 类中常用的函数介绍
    • 2.QLineEdit 类中常用的信号介绍
  • 三、核心功能与特性
    • 1.基础文本操作
    • 2.隐私保护:回显模式(Echo Mode)
    • 3.限制输入:掩码(Input Mask)
    • 4.限制输入:验证器(Validator)
    • 5.实用小功能
    • 6.整体界面
  • 总结


前言

本节主要介绍基本窗口控件中的 单行文本框(QLineEdit)


一、单行文本框 QLineEdit 简介

1.继承链关系

QLineEdit 直接继承 QWidget:

在这里插入图片描述

2.QLineEdit 是什么?

定义:QLineEdit 是一个允许用户输入和编辑单行纯文本的控件。它是用户与应用程序交互最基础的组件之一,常用于:

1)表单填写(用户名、密码、电话号码等)
2)数据过滤和搜索框
3)命令输入
4)任何需要用户输入简短文本的场景

其核心设计目标是高效、轻量级地处理单行文本。

二、常用函数和信号

1.QLineEdit 类中常用的函数介绍

函数功能描述
setText()设置文本框中的内容
text()返回文本框中的内容
clear()清除文本框中的内容
setPlaceholderText()设置文本框浮显文字
setAlignment()按固定值方式对齐文本
selectAll()选中全部文本
setSelection(a, b)选中设置范围的文本
setFocus()获取焦点
setMaxLength()设置文本框允许输入的最大字符数
setReadOnly()设置文本框是只读的
setEchoMode()设置文本框的显示格式
setInputMask()设置掩码
setValidator()设置文本框的验证器(验证规则),将限制任意可能输入的文本

2.QLineEdit 类中常用的信号介绍

信号功能描述
selectionChanged只要选择发生变化,就会发射这个信号
textChanged当修改文本内容时,就会发射这个信号
editingFinished当编辑文本结束时,就会发射这个信号
textEdited(text)每当编辑文本时,都会发射此信号,text 参数是新文本
cursorPositionChanged(int oldPos,int newPos)每当指针移动时,就会发射这个信号
returnPressed当按 Enter 键时,就会发射这个信号

三、核心功能与特性

1.基础文本操作

①设置/获取文本、②清空文本、③设置占位符文本(提示文字)、④设置文字颜色和背景色、⑤
选中文本、⑥移动光标、⑦占位提示符,限制长度、⑧只读文本、⑨槽函数
这些是最基本也是最常用的功能。

        # 1. 设置/获取文本self.ui.btn_normal.clicked.connect(self.Text_normal)# 2. 清空文本self.ui.btn_clear.clicked.connect(lambda: self.ui.Edit_clear.clear())# 3. 设置占位符文本(提示文字)self.ui.btn_holder.clicked.connect(self.Text_holder)# 4. 设置颜色self.ui.btn_Set.clicked.connect(self.Text_Set)# 5. 选择文本self.ui.Edit_select.setText("zheshi我随意输入的文本!!")self.ui.btn_select.clicked.connect(self.Text_select)# 6. 移动光标self.ui.Edit_cursor.setText("点击左边按钮向右移动光标")self.ui.Edit_cursor.setFocus()  # 获取焦点self.ui.Edit_cursor.setCursorPosition(2)  # 设置文本框的当前指针的位置为 2self.ui.btn_cursor.clicked.connect(self.Text_cursor)# 7. 占位提示符,限制长度self.ui.Edit_maxLength.setMaxLength(6)self.ui.Edit_maxLength.setPlaceholderText("最多输入6个字符")self.ui.Edit_maxLength.keyPressEvent = self.keyPressEvent# 8. 只读文本self.ui.Edit_readOnly.setReadOnly(True)self.ui.Edit_readOnly.setText("只读文本,不能编辑")# 9. 槽函数self.ui.Edit_change.setPlaceholderText("输入文本框会改变左侧标签")self.ui.Edit_change.textChanged.connect(lambda: self.ui.label_change.setText('更新标签:' + self.ui.Edit_change.text()))def Text_normal(self):self.ui.Edit_normal.setText("初始化文本!!!")print(f"当前获取的文本为:{self.ui.Edit_normal.text()}")def Text_normal(self):self.ui.Edit_normal.setText("初始化文本!!!")print(f"当前获取的文本为:{self.ui.Edit_normal.text()}")def Text_holder(self):self.ui.Edit_holder.clear()self.ui.Edit_holder.setPlaceholderText("请输入你想输入的内容!!!")def Text_Set(self):self.ui.Edit_Set.setText("显示红色背景白色字体并且居中对齐!!")self.ui.Edit_Set.setAutoFillBackground(True)palette = QPalette()palette.setColor(QPalette.ColorRole.Base, Qt.GlobalColor.red)palette.setColor(QPalette.ColorRole.Text, Qt.GlobalColor.white)self.ui.Edit_Set.setPalette(palette)self.ui.Edit_Set.setAlignment(Qt.AlignmentFlag.AlignCenter)def Text_select(self):self.ui.Edit_select.selectAll()  # 全选# 或通过代码选择部分文本#self.ui.Edit_select.setSelection(0, 5)  # 选择从0开始的前5个字符# 获取选中的文本print(f"输出选中的文本:{self.ui.Edit_select.selectedText()}")def Text_cursor(self):self.ui.Edit_cursor.cursorForward(True, 2)  #移动指针使用cursorForward,如果 mark 为 True 则将每个移出的字符添加到选择中print(f"输出选中的文本:{self.ui.Edit_cursor.selectedText()}")#self.ui.Edit_cursor.cut()   #剪切选中文本的内容

在这里插入图片描述

2.隐私保护:回显模式(Echo Mode)

控制文本的显示方式,特别适用于密码输入等敏感场景。允许输入的文本框显示格式的值可以是以下几个:
1)QLineEdit.EchoMode.Normal:正常显示所输入的字符,此为默认选项;
2)QLineEdit.EchoMode.NoEcho:不显示任何输入的字符,常用于密码类型的输入,并且其密码长度需要保密;
3)QLineEdit.EchoMode.Password:显示与平台相关的密码掩码字符,而不是实际输入的字符;
4)QLineEdit.EchoMode.PasswordEchoOnEdit:在编辑时显示字符,负责显示密码类型的输入。

        # 1. 默认模式,正常显示self.ui.Edit_Normal.setPlaceholderText("Normal (默认)")# 2. 密码模式 - 最常用self.ui.Edit_Password.setEchoMode(QLineEdit.EchoMode.Password)self.ui.Edit_Password.setPlaceholderText("Password模式")# 3. 无回显模式 - 输入时什么都不显示(适用于高度敏感信息)self.ui.Edit_NoEcho.setEchoMode(QLineEdit.EchoMode.NoEcho)self.ui.Edit_NoEcho.setPlaceholderText("NoEcho模式")# 4. 密码编辑模式 - 只在失去焦点时隐藏self.ui.Edit_PasswordEchoOnEdit.setEchoMode(QLineEdit.EchoMode.PasswordEchoOnEdit)self.ui.Edit_PasswordEchoOnEdit.setPlaceholderText("PasswordEchoOnEdit模式")

在这里插入图片描述

3.限制输入:掩码(Input Mask)

强制用户按照特定格式输入,可以使用掩码,常见的有 IP 地址、MAC地址、日期、许可证号等,掩码由掩码字符和分隔符字符串组成,后面可以跟一个分号和空白字符,空白字符在编辑后会从文本中删除:

# 掩码self.ui.Edit_IP.setInputMask("000.000.000.000; ")self.ui.Edit_MAC.setInputMask("HH:HH:HH:HH:HH:HH; ")self.ui.Edit_Data.setInputMask("0000-00-00")self.ui.Edit_License.setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA#")# 气泡提示self.ui.Edit_IP.setToolTip("ip: 192.168.10.5")self.ui.Edit_MAC.setToolTip("mac: ac:be:ad:ab:cd:op")self.ui.Edit_Data.setToolTip("date: 2020-01-01")self.ui.Edit_License.setToolTip("许可证: HDFG-ADDB-BDFB-QDDB-HGDB")

在这里插入图片描述

4.限制输入:验证器(Validator)

提供更灵活的输入验证,可以限制字符类型、范围等,验证器由 QValidator 控制,有 3 个子类,即 QDoubleValidator、QIntValidator 和 QRegularExpressionValidator,分别表示整型验证器、浮点型验证器和正则验证器:

        # 1. 整数验证器(限制0-100之间的整数)int_validator = QIntValidator(self)int_validator.setRange(1, 99)self.ui.Edit_Int.setValidator(int_validator)self.ui.Edit_Int.setPlaceholderText("输入整数")# 2. 浮点数验证器(限制-999.99到999.99,保留2位小数)double_validator = QDoubleValidator(self)double_validator.setRange(-100.0, 100.0)double_validator.setNotation(QDoubleValidator.Notation.StandardNotation)double_validator.setDecimals(2)self.ui.Edit_Double.setValidator(double_validator)self.ui.Edit_Double.setPlaceholderText("输入浮点数")# 3. 正则表达式验证器(最强大灵活)#email_regex = QRegularExpression("[a-zA-Z0-9]+$")    #字符和数字email_regex = QRegularExpression(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}")email_validator = QRegularExpressionValidator(self)email_validator.setRegularExpression(email_regex)self.ui.Edit_Validator.setValidator(email_validator)self.ui.Edit_Validator.setPlaceholderText("输入邮箱地址")

在这里插入图片描述
注意点:实操中发现输入的数据范围并不是跟输入的数字相关,反而是跟格式或者说跟数值位数有关,这一点不知道是不是这个版本的BUG,这一点需要注意一下。

5.实用小功能

自动补全功能(Auto-Completion),提升用户体验,减少输入错误。

        # 创建补全器completer = QCompleter(["apple", "banana", "cherry", "date", "elderberry"])# 设置补全模式(有多种模式可选)completer.setCaseSensitivity(Qt.CaseSensitivity.CaseInsensitive)  # 不区分大小写completer.setFilterMode(Qt.MatchFlag.MatchContains)  # 包含匹配(而不仅仅是前缀匹配)# 应用到QLineEditself.ui.Edit_maxLength.setCompleter(completer)

在这里插入图片描述
动作与装饰器功能,在文本框内添加功能按钮(如清除按钮、密码显示切换)。

        # 添加清除按钮(非常实用)self.ui.Edit_Password.setClearButtonEnabled(True)  # 输入内容后右侧会出现清除按钮# 自定义动作按钮(如在左侧添加搜索或者其他图标)self.search_action = self.ui.Edit_Password.addAction(QIcon(':/res/Resources/image/5.jpeg'), QLineEdit.ActionPosition.LeadingPosition)self.search_action.triggered.connect(self.toggle_password_visibility)def toggle_password_visibility(self):if self.ui.Edit_Password.echoMode() == QLineEdit.EchoMode.Password:self.ui.Edit_Password.setEchoMode(QLineEdit.EchoMode.Normal)self.search_action.setIcon(QIcon(':/res/Resources/image/3.jpeg'))else:self.ui.Edit_Password.setEchoMode(QLineEdit.EchoMode.Password)self.search_action.setIcon(QIcon(':/res/Resources/image/5.jpeg'))

在这里插入图片描述

6.整体界面

在这里插入图片描述

总结

QLineEdit 是一个功能极其丰富的单行文本输入控件,其核心优势包括:

功能领域关键特性应用场景
基础操作文本获取/设置、占位符、选择所有基础输入场景
回显控制密码模式、无回显模式登录表单、敏感信息输入
输入验证掩码、验证器、最大长度数据格式约束(电话、邮箱、数字)
用户体验自动补全、动作按钮搜索框、命令输入、快速选择

掌握 QLineEdit 的各种特性,能够帮助你构建出更加健壮、用户友好、功能丰富的桌面应用程序界面。但是当我们遇到①需要多行文本输入、②需要丰富的文本格式等场景时,就需要用到多行文本框(QTextEdit/QPlainTextEdit)控件来进行适配。

本节源码路径为:Python-QLineEditQTextEdit基本窗口控件-单行文本框(QLineEdit)

http://www.dtcms.com/a/469130.html

相关文章:

  • wordpress如何应用sslseo关键字优化软件
  • flutter项目打包macOS桌面程序dmg
  • 【MCAL】AUTOSAR架构下TC3xx芯片I2C模块详解
  • Windows10部署yolov8
  • Git|GitHub SSH 连接配置与验证全流程(通用方法)
  • K230基础-录放音频
  • 炫酷风格的 ECharts + AWS 实时数据 Dashboard
  • wordpress菜单 链接怎样进行站点优化
  • 【H3C NX30Pro】光猫桥接并使用OpenWRT配置NAS端口映射;配置IPv6、IPv4公网直连内网服务器;
  • Parasoft C/C++test如何将静态分析集成到VSCode中
  • 沈阳网站建设公司哪个好网站模板打包
  • 树莓派+ubuntu的蓝牙
  • 【k8s】基础概念+下载安装教程
  • K8S原理刨析
  • 前端学习之样式设计
  • vue3+elementplugs+原生css实现切换主题色
  • Windows用Notepad++编辑Shell脚本:一招解决Linux执行报错问题
  • 自己做网站要不要租服务器软件开发工程师时薪
  • 工业智能科技网站设计做搜狗pc网站软件下载
  • 企业网站制作收费拍卖行 网站建设
  • 网站建设和网站开发的区别域名主机基地
  • 宁波营销型网站建设首选肥东县建设局网站
  • 工商营业执照网上申报关键词优化报价
  • 帮人做网站要怎么赚钱吗网页设计软件培训机构
  • seo网站建设费用济南网站建设第六网建
  • 昆山市网站建设产品运营主要做什么
  • 网站建设进无形资产的规定电子商务网站硬件建设的核心
  • 免费的毕业设计网站建设北京移动端网站建设
  • 简易网站模板wordpress菜单创建
  • 哪个网站可以做兼职讲师建设部网站施工员查询