#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 最终测试版本 - 确保窗口显示 """ import sys import os from PyQt5.QtWidgets import QApplication from PyQt5.QtCore import Qt # 添加项目根目录到Python路径 sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) # 全局退出回调函数 _on_exit_callback = None def set_on_exit_callback(callback): """设置退出时的回调函数""" global _on_exit_callback _on_exit_callback = callback def main(): print("1. 创建QApplication...") app = QApplication(sys.argv) print("2. 导入模块...") from views.login_dialog import LoginDialog from views.main_window import MainWindow from ui_utils.user_session import UserSession print("3. 显示登录对话框...") login_dialog = LoginDialog() # 确保登录对话框显示在最前面 login_dialog.setWindowFlags(login_dialog.windowFlags() | Qt.WindowStaysOnTopHint) login_dialog.raise_() login_dialog.activateWindow() # 执行对话框 if login_dialog.exec_() != LoginDialog.Accepted: print("用户取消登录,退出程序") # 用户取消登录时,调用退出回调 if _on_exit_callback: print("用户取消登录,调用退出回调...") _on_exit_callback() return -1 # 返回 -1 表示用户取消登录 # 获取登录用户信息并保存到全局会话 user_info = login_dialog.get_user_info() if not user_info: print("登录信息获取失败,退出程序") # 登录信息获取失败时,调用退出回调 if _on_exit_callback: print("登录信息获取失败,调用退出回调...") _on_exit_callback() return -1 # 返回 -1 表示登录失败 UserSession.set_user_info(user_info) print(f"4. 用户登录成功: {user_info['username']} (角色: {user_info['role']})") print("5. 创建主窗口...") window = MainWindow() # 确保窗口显示在前台 window.show() window.raise_() window.activateWindow() print("6. 窗口已显示") print("7. 进入事件循环...") # 运行应用 exit_code = app.exec_() print(f"8. 应用退出,退出码: {exit_code}") # UI 事件循环结束后,调用退出回调 if _on_exit_callback: print("事件循环结束,调用退出回调...") _on_exit_callback() return exit_code if __name__ == '__main__': print("=== DTM试验管理系统启动 ===") try: exit_code = main() print(f"=== 程序结束,退出码: {exit_code} ===") except Exception as e: print(f"=== 程序异常: {e} ===") import traceback traceback.print_exc()