QDialog 对话框
🚀 QDialog 是 PyQt 中用于创建对话框的核心类,适用于与用户的短暂交互场景,例如输入获取、消息提示或配置设置。
主要功能
✅ 核心能力:
- 创建独立对话框窗口
- 添加控件(如
QLabel
、QLineEdit
、按钮
等) - 灵活设置布局(支持
QVBoxLayout
/QHBoxLayout
) - 支持模态/非模态显示
快速上手指南
1. 创建基础对话框
dialog = QDialog(parent=self) # 创建对话框实例
dialog.setWindowTitle("📝 用户信息输入") # 设置标题
2. 添加交互控件
# 文本标签
label = QLabel("请输入姓名:")
# 输入框
name_input = QLineEdit()
# 按钮组
buttons = QDialogButtonBox(
QDialogButtonBox.Ok | QDialogButtonBox.Cancel
)
3. 布局管理
layout = QVBoxLayout()
layout.addWidget(label)
layout.addWidget(name_input)
layout.addWidget(buttons)
dialog.setLayout(layout) # ⚡ 应用布局
4. 信号连接
buttons.accepted.connect(dialog.accept) # ✅ 确定按钮
buttons.rejected.connect(dialog.reject) # ❌ 取消按钮
完整示例代码
import sys
from PyQt5.QtWidgets import (
QApplication,
QMainWindow,
QPushButton,
QDialog,
QVBoxLayout,
QLabel,
QLineEdit,
QDialogButtonBox
)
class AppWindow(QMainWindow):
def __init__(self):
super().__init__()
# 主窗口配置
self.setWindowTitle("🏠 主界面")
self.resize(300, 200)
# 触发按钮
self.btn = QPushButton("打开对话框 🪟", self)
self.setCentralWidget(self.btn)
self.btn.clicked.connect(self.show_dialog)
def show_dialog(self):
# 对话框配置
dialog = QDialog(self)
dialog.setWindowTitle("🔍 信息收集")
# 布局构建
layout = QVBoxLayout()
# 信息输入组件
layout.addWidget(QLabel("您的昵称:"))
self.nickname = QLineEdit()
layout.addWidget(self.nickname)
# 操作按钮组
btns = QDialogButtonBox(
QDialogButtonBox.Ok | QDialogButtonBox.Cancel
)
btns.accepted.connect(dialog.accept)
btns.rejected.connect(dialog.reject)
layout.addWidget(btns)
dialog.setLayout(layout)
# 处理对话框结果
if dialog.exec_() == QDialog.Accepted:
print(f"✅ 输入内容: {self.nickname.text()}")
else:
print("❌ 用户取消操作")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = AppWindow()
window.show()
sys.exit(app.exec_())