93 lines
2.7 KiB
Python
93 lines
2.7 KiB
Python
#!/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() |