3. 文本框输入与回显
任务说明
创建一个基于 QWidget 的登录界面,包含用户名输入框(QLineEdit)、密码输入框(QLineEdit,启用掩码显示)和登录按钮(QPushButton)。点击登录按钮后,在界面上以标签形式回显输入的用户名和密码。
实现代码
# login_demo.py
import sys
from PyQt5.QtWidgets import (
QApplication, QWidget, QLabel, QLineEdit,
QPushButton, QVBoxLayout, QHBoxLayout, QMessageBox
)
class LoginWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("登录界面")
self.setFixedSize(320, 200)
# 用户名行
self.user_label = QLabel("用户名:")
self.user_edit = QLineEdit()
self.user_edit.setPlaceholderText("请输入用户名")
# 密码行
self.pwd_label = QLabel("密码:")
self.pwd_edit = QLineEdit()
self.pwd_edit.setEchoMode(QLineEdit.Password) # 掩码显示
self.pwd_edit.setPlaceholderText("请输入密码")
# 按钮
self.login_btn = QPushButton("登录")
self.login_btn.clicked.connect(self.on_login)
# 回显标签
self.result_label = QLabel("")
self.result_label.setWordWrap(True)
# 布局
user_layout = QHBoxLayout()
user_layout.addWidget(self.user_label)
user_layout.addWidget(self.user_edit)
pwd_layout = QHBoxLayout()
pwd_layout.addWidget(self.pwd_label)
pwd_layout.addWidget(self.pwd_edit)
main_layout = QVBoxLayout()
main_layout.addLayout(user_layout)
main_layout.addLayout(pwd_layout)
main_layout.addWidget(self.login_btn)
main_layout.addWidget(self.result_label)
self.setLayout(main_layout)
def on_login(self):
username = self.user_edit.text().strip()
password = self.pwd_edit.text().strip()
if not username or not password:
QMessageBox.warning(self, "提示", "用户名和密码不能为空!")
return
# 回显输入内容
self.result_label.setText(
f"登录信息:\n用户名:{username}\n密码:{password}"
)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = LoginWindow()
window.show()
sys.exit(app.exec_())
运行与验证
- 依赖安装:确保已安装 PyQt5,执行
pip install PyQt5。 - 启动程序:运行
python login_demo.py,窗口弹出。 - 功能验证:
- 在用户名和密码框中输入内容,密码框显示为圆点掩码。
- 点击“登录”按钮,窗口下方标签显示输入的用户名和密码原文。
- 若任一输入框为空并点击登录,弹出警告对话框,且不执行回显。
- 通过标准:输入非空内容后点击登录,回显内容与输入完全一致;空输入时出现警告提示。
关键说明
setEchoMode(QLineEdit.Password)使密码框以掩码显示,但text()获取的仍是原始输入值。- 使用
strip()去除首尾空格,避免误判空输入。 - 回显密码原文仅为演示输入获取功能,实际项目中不应明文展示密码。