day04——继续探索 PyQt6 的窗口组件

Day 04 🚀。今天要把前几天的知识串起来,继续探索 PyQt6 的窗口组件(QLineEdit、QTextEdit、QCheckBox、QRadioButton)。这些是常见的 输入与选择控件,它们能让界面和用户的交互更丰富。

🎯 学习目标

  1. 理解 QLineEdit 与 QTextEdit 的区别与用途。

  2. 学会使用 QCheckBox(复选框)QRadioButton(单选框)

  3. 结合 信号槽,实现交互小案例。


🧩 知识讲解

1. QLineEdit 与 QTextEdit

  • QLineEdit:单行文本输入框。常用来输入用户名、密码、日期等。

    • 常见方法:

      • setPlaceholderText("提示语") → 占位提示

      • setEchoMode(QLineEdit.EchoMode.Password) → 密码输入

      • text() → 获取内容

  • QTextEdit:多行文本输入框。类似一个小记事本。

    • 常见方法:

      • setPlainText("初始化内容")

      • toPlainText() → 获取内容

2. QCheckBox(复选框)

  • 复选框可以 多选,常见于“我已阅读并同意用户协议”。

  • 常见方法:

    • setChecked(True) → 默认勾选

    • isChecked() → 判断是否选中

3. QRadioButton(单选按钮)

  • 单选按钮在 同一组 内只能选一个。

  • 常见方法:

    • setChecked(True) → 默认选中

    • isChecked() → 判断是否选中


📝 今日代码示例

做一个小应用:

  1. 用户在 QLineEdit 输入姓名。

  2. QTextEdit 输入“自我介绍”。

  3. 勾选 QCheckBox(是否同意规则)。

  4. 选择性别(QRadioButton 男/女)。

  5. 点击按钮后,汇总所有输入显示在 QLabel 上。

from PyQt6.QtWidgets import (QApplication, QLabel, QWidget, QLineEdit, 
                             QVBoxLayout, QTextEdit, QCheckBox, QRadioButton,
                             QPushButton, QHBoxLayout)
import sys

# 创建应用
app = QApplication(sys.argv)
# 创建主窗口
window = QWidget()
window.setWindowTitle("day04 - 多种控件")
window.resize(400, 400)

# 姓名输入
name_label = QLabel("姓名:")
name_input = QLineEdit()
name_input.setPlaceholderText("请输入姓名")

# 自我介绍
intro_label = QLabel("自我介绍:")
intro_input = QTextEdit()

# 协议勾选
agree_checkbox = QCheckBox("我已阅读并同意相关条款")

# 性别选择
gender_label = QLabel("性别:")
male_radio = QRadioButton("男")
female_radio = QRadioButton("女")

gender_layout = QHBoxLayout()
gender_layout.addWidget(male_radio)
gender_layout.addWidget(female_radio)

# 提交按钮
submit_button = QPushButton("提交")
def on_submit():
    name = name_input.text().strip()
    intro = intro_input.toPlainText().strip()
    agree = "已同意" if agree_checkbox.isChecked() else "未同意"
    gender = "男" if male_radio.isChecked() else "女" if female_radio.isChecked() else "未选择"

    result = f"姓名:{name}\n性别:{gender}\n自我介绍:{intro}\n协议状态:{agree}"
    result_label.setText(result)

submit_button.clicked.connect(on_submit)

# 结果显示
result_label = QLabel("结果会显示在这里")

# 布局管理
layout = QVBoxLayout()
layout.addWidget(name_label)
layout.addWidget(name_input)
layout.addWidget(intro_label)
layout.addWidget(intro_input)
layout.addWidget(agree_checkbox)
layout.addWidget(gender_label)
layout.addLayout(gender_layout)
layout.addWidget(submit_button)
layout.addWidget(result_label)
window.setLayout(layout)

# 显示窗口
window.show()

# 进入事件循环
sys.exit(app.exec())

📌 运行效果

  1. 输入姓名、写一段自我介绍。

  2. 勾选协议(或不勾)。

  3. 选择性别。

  4. 点击提交 → 下方会显示完整结果。


image


今天的学习就像搭建了一个小表单界面,这是大部分应用的基础。
下一天(Day05),我们会讲 布局管理更高级的用法(GridLayout / FormLayout),让界面更美观。

posted @ 2025-09-09 10:20  毛豆*_*  阅读(24)  评论(0)    收藏  举报