3. 文本框输入与回显
任务目标
创建一个Qt Widgets应用程序,包含一个QLineEdit文本框和一个QLabel标签。当用户在文本框中输入文字时,标签实时显示当前输入的内容。
实现方案
使用QLineEdit的textChanged信号,连接到自定义槽函数,将文本框内容同步设置到QLabel上。该信号在文本内容每次变化时(包括输入、删除、粘贴等操作)都会触发,从而实现实时回显。
完整代码
# main.py
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit, QLabel
class TextEchoWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("文本框输入与回显")
self.resize(300, 120)
# 创建控件
self.input_edit = QLineEdit(self)
self.input_edit.setPlaceholderText("请输入文字...")
self.output_label = QLabel("这里将实时显示输入内容", self)
# 布局
layout = QVBoxLayout()
layout.addWidget(self.input_edit)
layout.addWidget(self.output_label)
self.setLayout(layout)
# 信号连接:文本变化时更新标签
self.input_edit.textChanged.connect(self.update_label)
def update_label(self, text):
self.output_label.setText(text)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = TextEchoWindow()
window.show()
sys.exit(app.exec_())
运行方式
- 确保已安装PyQt5:
pip install PyQt5 - 运行程序:
python main.py
验证方法
程序启动后,在文本框中逐字输入任意内容(如"Hello Qt"),观察下方标签是否同步显示相同文字。删除部分字符或清空文本框,标签内容应随之更新。当文本框为空时,标签显示为空字符串,不再显示占位提示文字。
关键说明
textChanged信号会携带当前文本框的完整字符串作为参数,因此槽函数update_label直接将该字符串设置为标签文本即可。无需额外读取控件属性,连接建立后回显逻辑自动生效。