Files
dtm-py-all/UI/dtmgtUI.py

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()