PyQt6/PySide6 的 QLineEdit 类

QLineEdit 是 PyQt6 或 PySide6 库中用于输入单行文本的控件。它是一个非常常用且功能丰富的控件,适用于各种需要用户输入文本的场景,如用户名、密码、搜索框等。QLineEdit 提供了丰富的属性和方法,使得开发者可以轻松地控制和处理用户的输入。下面我将详细介绍 QLineEdit 的主要特性及其使用方法。

1. 基本概念

  • 单行文本编辑器:用户可以在其中输入和编辑单行文本。
  • 占位符文本:在没有输入时显示的提示文本。
  • 输入掩码:限制用户输入的格式(例如电话号码、日期等)。
  • 验证器:用于验证用户输入的内容是否符合特定规则。
  • 回显模式:控制文本的显示方式(例如密码输入时隐藏字符)。

2. 创建 QLineEdit 实例

要使用 QLineEdit,首先需要导入相应的库:

from PyQt6.QtWidgets import QApplication, QLineEdit, QVBoxLayout, QWidget
# 或者
from PySide6.QtWidgets import QApplication, QLineEdit, QVBoxLayout, QWidget

接着创建一个窗口,并在其中添加 QLineEdit 控件:

class MyWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle("我的应用程序")self.setGeometry(100, 100, 400, 300)# 初始化UIself.initUI()def initUI(self):layout = QVBoxLayout()# 创建文本输入框line_edit = QLineEdit(self)line_edit.setPlaceholderText("请输入文本...")# 添加到布局layout.addWidget(line_edit)self.setLayout(layout)if __name__ == "__main__":app = QApplication([])window = MyWindow()window.show()app.exec()

3. QLineEdit 的常用属性和方法

属性
  • text:获取或设置当前的文本内容。
  • placeholderText:获取或设置占位符文本。
  • maxLength:获取或设置最大输入长度。
  • echoMode:获取或设置回显模式(普通、密码、无回显等)。
  • cursorPosition:获取或设置光标位置。
  • alignment:获取或设置文本对齐方式。
  • readOnly:获取或设置是否只读。
  • frame:获取或设置是否有边框。
  • inputMask:获取或设置输入掩码。
  • validator:获取或设置验证器。
  • toolTip:获取或设置工具提示文本。
  • statusTip:获取或设置状态栏提示文本。
方法
  • setText(str):设置文本内容。
  • text() -> str:获取文本内容。
  • setPlaceholderText(str):设置占位符文本。
  • placeholderText() -> str:获取占位符文本。
  • setMaxLength(int):设置最大输入长度。
  • maxLength() -> int:获取最大输入长度。
  • setEchoMode(QLineEdit.EchoMode):设置回显模式。
  • echoMode() -> QLineEdit.EchoMode:获取回显模式。
  • setCursorPosition(int):设置光标位置。
  • cursorPosition() -> int:获取光标位置。
  • setAlignment(Qt.AlignmentFlag):设置文本对齐方式。
  • alignment() -> Qt.AlignmentFlag:获取文本对齐方式。
  • setReadOnly(bool):设置是否只读。
  • isReadOnly() -> bool:判断是否只读。
  • setFrame(bool):设置是否有边框。
  • hasFrame() -> bool:判断是否有边框。
  • setInputMask(str):设置输入掩码。
  • inputMask() -> str:获取输入掩码。
  • setValidator(QValidator):设置验证器。
  • validator() -> QValidator:获取验证器。
  • setToolTip(str):设置工具提示文本。
  • toolTip() -> str:获取工具提示文本。
  • setStatusTip(str):设置状态栏提示文本。
  • statusTip() -> str:获取状态栏提示文本。
  • clear():清除文本内容。
  • selectAll():全选文本。
  • deselect():取消选择文本。

4. 详细示例

设置文本和占位符文本
line_edit = QLineEdit(self)
line_edit.setText("初始文本")
line_edit.setPlaceholderText("请输入文本...")
设置最大输入长度
line_edit = QLineEdit(self)
line_edit.setMaxLength(10)  # 最多输入10个字符
设置回显模式
line_edit = QLineEdit(self)
line_edit.setEchoMode(QLineEdit.EchoMode.Password)  # 密码模式
设置文本对齐方式
line_edit = QLineEdit(self)
line_edit.setAlignment(Qt.AlignmentFlag.AlignCenter)  # 居中对齐
设置只读
line_edit = QLineEdit(self)
line_edit.setReadOnly(True)  # 只读模式
设置输入掩码
line_edit = QLineEdit(self)
line_edit.setInputMask("000-000-0000")  # 电话号码格式
设置验证器
from PyQt6.QtGui import QIntValidator, QDoubleValidator, QRegularExpressionValidator
# 或者
from PySide6.QtGui import QIntValidator, QDoubleValidator, QRegularExpressionValidatorline_edit = QLineEdit(self)
int_validator = QIntValidator(0, 99)  # 仅允许输入0到99之间的整数
line_edit.setValidator(int_validator)double_validator = QDoubleValidator(0.0, 99.99, 2)  # 仅允许输入0.00到99.99之间的浮点数
line_edit.setValidator(double_validator)regex_validator = QRegularExpressionValidator(QRegularExpression(r"^[a-zA-Z]+$"))  # 仅允许输入字母
line_edit.setValidator(regex_validator)
设置工具提示和状态栏提示
line_edit = QLineEdit(self)
line_edit.setToolTip("这是一个输入框")
line_edit.setStatusTip("输入您的信息")
清除文本内容
line_edit.clear()
全选文本
line_edit.selectAll()
取消选择文本
line_edit.deselect()

5. 信号与槽机制

QLineEdit 支持多种信号,这些信号可以在用户交互时发射。常见的信号包括 textChangedtextEditedreturnPressed。你可以通过连接这些信号到槽函数来处理用户的输入事件。

def on_text_changed(text):print(f"文本改变: {text}")def on_text_edited(text):print(f"文本编辑: {text}")def on_return_pressed():print("回车键被按下")line_edit = QLineEdit(self)
line_edit.textChanged.connect(on_text_changed)
line_edit.textEdited.connect(on_text_edited)
line_edit.returnPressed.connect(on_return_pressed)

6. 自定义样式

除了使用内置的样式设置外,你还可以通过样式表(QSS)来自定义 QLineEdit 的外观。样式表类似于CSS,提供了强大的样式控制能力。

line_edit = QLineEdit(self)
line_edit.setStyleSheet("""QLineEdit {background-color: #f0f0f0;border: 1px solid #cccccc;padding: 10px;font-size: 16px;color: #333333;}QLineEdit:focus {border: 1px solid #0078d7;}
""")

7. 动态更新和控制

你可以动态地更新 QLineEdit 的内容,或者根据某些条件控制其行为。例如,在定时器或其他事件触发时更新文本内容。

import time
from PyQt6.QtCore import QTimerclass MyWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle("我的应用程序")self.setGeometry(100, 100, 400, 300)# 初始化UIself.initUI()# 创建定时器self.timer = QTimer(self)self.timer.timeout.connect(self.update_line_edit)self.timer.start(1000)  # 每秒触发一次def initUI(self):layout = QVBoxLayout()# 创建文本输入框self.line_edit = QLineEdit(self)self.line_edit.setPlaceholderText("时间: 00:00:00")# 添加到布局layout.addWidget(self.line_edit)self.setLayout(layout)def update_line_edit(self):current_time = time.strftime("%H:%M:%S", time.localtime())self.line_edit.setText(f"时间: {current_time}")if __name__ == "__main__":app = QApplication([])window = MyWindow()window.show()app.exec()

总结

QLineEdit 是 PyQt6/PySide6 中非常基础且灵活的控件,适用于各种需要用户输入文本的场景。通过设置不同的属性和使用样式表,你可以创建出丰富多样的文本输入框样式。同时,通过信号与槽机制,你可以方便地处理用户的输入事件。希望以上内容能帮助你更好地理解和运用 QLineEdit,并能够根据具体需求创建出功能丰富且用户友好的文本输入控件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12850.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《redis哨兵机制》

【redis哨兵机制导读】上一节介绍了redis主从同步的机制,但大家有没有想过一种场景,比如:主库突然挂了,那么按照读写分离的设计思想,此时redis集群只有从库才能提供读服务,那么写服务该如何提供&#xff0c…

用python实现进度条

前言 在Python中,可以使用多种方式实现进度条。以下是几种常见的进度条格式的实现方法: 1. 使用 tqdm 库 tqdm 是一个非常流行的库,可以轻松地在循环中显示进度条。 from tqdm import tqdm import time# 示例:简单的进度条 fo…

Mysql:数据库

Mysql 一、数据库概念?二、MySQL架构三、SQL语句分类四、数据库操作4.1 数据库创建4.2 数据库字符集和校验规则4.3 数据库修改4.4 数据库删除4.4 数据库备份和恢复其他 五、表操作5.1 创建表5.2 修改表5.3 删除表 六、表的增删改查6.1 Create(创建):数据新增1&#…

2024年12月 Scratch 图形化(二级)真题解析 中国电子学会全国青少年软件编程等级考试

202412 Scratch 图形化(二级)真题解析 中国电子学会全国青少年软件编程等级考试 一、单选题(共25题,共50分) 第 1 题 小猫初始位置和方向如下图所示,下面哪个选项能让小猫吃到老鼠?( ) A. B. …

开工了,搬砖了!

今天是正月初八,正式搬砖了。地铁还是空荡荡的,显然很多小伙伴春节假期还没有结束。往年上班时间也是正月初十左右,每次看到身边的人都返程了,心理总有些许不安,就好像人只有忙碌起来才显得生命和时间都是可贵的&#…

gesp(C++六级)(13)洛谷:P11375:[GESP202412 六级] 树上游走

gesp(C六级)(13)洛谷:P11375:[GESP202412 六级] 树上游走 题目描述 小杨有一棵包含无穷节点的二叉树(即每个节点都有左儿子节点和右儿子节点;除根节点外,每个节点都有父节点)&#…

51单片机看门狗系统

在 STC89C52 单片机中,看门狗控制寄存器的固定地址为 0xE1。此地址由芯片厂商在硬件设计时确定,但是它在头文件中并未给出,因此在使用看门狗系统时需要声明下这个特殊功能寄存器 sfr WDT_CONTR 0xE1; 本案将用一个小灯的工作状况来展示看门…

HTML排版标签、语义化标签、块级和行内元素详解

目录 前言 一、HTML中的排版标签 1. 文本相关标签 1.1 标题标签 ~ 1.2 段落标签 1.3 强调和加粗 1.4 换行标签 1.5 水平线标签 二、HTML中的语义化标签 2.1 语义化标签概述 2.2 常见的语义化标签 示例(核心代码部分): 三、HTM…

20250205——Windows系统基于ollama的DeepSeek-R1本地安装

1、安装ollama 1.1 Windows系统 打开ollama官网链接Download Ollama on Windows,根据自己的系统下载安装包,如果是Windows系统,下载Windows版本。 1.1 Linux系统 (这个是因为运行遇到报错了,想自己记录一下解决方法&a…

DeepSeek R1 x ApiSmart

根据美国业界的说法:如果一个模型能够在生成良好代码方面表现更出色,那么通常它也能对非代码生成类型的其他用户查询产生更好的答案。 在AI编程领域,市面上已有多款大模型和工具供我们选择。常见的有OpenAI系列模型、Claude 3.5 Sonnet&#…

解决threeJS加载obj gltf和glb模型后颜色太暗的方法

网上找到的部分解决方法 网上找到的部分解决方法 咱们有时候去glb官方下载glb或gltf模型时候,模型显示太黑 其实通过查找后不难发现网上给出了很多解决方法,但是大部分都无法从根本上解决问题。我之前看到有一篇文章对gltf的解决方法是让gltf增加自发光…

GitHub Copilot 越狱漏洞

研究人员发现了两种操控 GitHub 的人工智能(AI)编码助手 Copilot 的新方法,这使得人们能够绕过安全限制和订阅费用、训练恶意模型等。 第一种技巧是将聊天交互嵌入 Copilot 代码中,利用 AI 的问答能力,使其产生恶意输…

动态规划练习八(01背包问题)

一、问题介绍与解题心得 01背包问题就是每个物品数量只有一个,每个物品可以取或不取,来达到收益最大,或者收益在某个值。 限制条件:背包容量有限,物品个数只有1个 解决问题:从价值入手(价值最…

Java实习生面试题汇总

Java实习生面试题汇总 简介 本人是二本大三学生,下半年大四。暑假在上海这边找实习工作,面了几家公司,所问到的问题记录在下面。 因为是在校生,没任何实习经历,一般找我面试的都是小公司,一般问的比较简…

开源安全一站式构建!开启企业开源治理新篇章

在如今信息技术日新月异、飞速发展的数字化时代,开源技术如同一股强劲的东风,为企业创新注入了源源不断的活力,然而,正如一枚硬币有正反两面,开源技术的广泛应用亦伴随着不容忽视的挑战。安全风险如影随形,…

xxl-job 自定义告警短信发送

官方介绍 代码实现 实现 JobAlarm 重写 doAlarm 方法 Component public class SmsJobAlarm implements JobAlarm {Overridepublic boolean doAlarm(XxlJobInfo info, XxlJobLog jobLog) {boolean alarmResult true;// 简单内容,根据业务自行修改String template …

大数据学习之Spark分布式计算框架RDD、内核进阶

一.RDD 28.RDD_为什么需要RDD 29.RDD_定义 30.RDD_五大特性总述 31.RDD_五大特性1 32.RDD_五大特性2 33.RDD_五大特性3 34.RDD_五大特性4 35.RDD_五大特性5 36.RDD_五大特性总结 37.RDD_创建概述 38.RDD_并行化创建 演示代码: // 获取当前 RDD 的分区数 Since ( …

【分布式架构理论3】分布式调用(2):API 网关分析

文章目录 一、API 网关的作用1. 业务层面:简化调用复杂性2. 系统层面:屏蔽客户端调用差异3. 其他方面: 二、API 网关的技术原理1. 协议转换2. 链式处理3. 异步请求机制1. Zuul1:同步阻塞处理2. Zuul2:异步非阻塞处理 三…

3.【BUUCTF】XSS-Lab1

进入题目页面如下 好好好&#xff0c;提示点击图片&#xff0c;点进去页面如下&#xff0c;且url中有传参&#xff0c;有注入点 发现题目给出了源码 查看得到本题的源码 分析一下代码 <!DOCTYPE html><!--STATUS OK--> <!-- 声明文档类型为 HTML5&#xff0c;告…

uniapp小程序自定义中间凸起样式底部tabbar

我自己写的自定义的tabbar效果图 废话少说咱们直接上代码&#xff0c;一步一步来 第一步&#xff1a; 找到根目录下的 pages.json 文件&#xff0c;在 tabBar 中把 custom 设置为 true&#xff0c;默认值是 false。list 中设置自定义的相关信息&#xff0c; pagePath&#x…