一、模态弹窗(Modal Dialog)
核心定义 :弹窗弹出后阻塞主界面 ,用户必须先关闭弹窗、完成交互操作,才能返回操作主窗口,是工业上位机、参数配置类界面的标准用法,可避免操作逻辑混乱。PyQt6 实现方式 :使用dialog.exec()打开,代码会暂停在当前行,直至弹窗关闭后继续执行。适用场景:CAN 通道配置、参数设置、保存确认、权限校验、关键操作确认等必须用户确认后才能继续的业务。
二、非模态弹窗(Modeless Dialog)
核心定义 :弹窗弹出后不阻塞主界面 ,主窗口与弹窗可同时操作、独立运行,属于辅助类窗口。PyQt6 实现方式 :使用dialog.show()打开,代码不会暂停,弹窗后台显示。适用场景:实时日志窗口、报文监控窗口、波形显示窗口、悬浮工具面板等。
三、系统内置快捷弹窗
- 消息提示框(QMessageBox):无需自定义 UI,快速实现提示、警告、错误、确认交互,用于简单信息告知;
- 输入对话框(QInputDialog):快速获取用户输入的文本 / 数字,适用于单一参数修改;
- 进度弹窗(QProgressDialog):展示耗时任务进度,防止 UI 卡死,用于自动化测试、程序刷写等场景。
四、使用总结
- 需强制用户确认、保证操作顺序 → 用模态弹窗(exec ());
- 需长期显示、不影响主操作 → 用非模态弹窗(show ());
- 简单提示 / 输入 / 进度展示 → 直接调用内置快捷弹窗,高效稳定。