# main.py import sys import traceback import os import platform # 添加项目根目录到Python路径 project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, project_root) # 设置Qt平台插件路径 - 增强版本,完全避免平台插件问题 def set_qt_plugin_path(): """设置Qt平台插件路径,确保所有平台插件都能正确加载""" system = platform.system() # 获取Python版本 python_version = f"python{sys.version_info.major}.{sys.version_info.minor}" # 可能的Qt插件路径列表 possible_paths = [] if system == "Windows": # Windows环境下的路径 possible_paths.extend([ os.path.join(project_root, '.venv', 'Lib', 'site-packages', 'PyQt5', 'Qt5', 'plugins'), os.path.join(sys.prefix, 'Lib', 'site-packages', 'PyQt5', 'Qt5', 'plugins'), os.path.join(os.path.expanduser('~'), 'AppData', 'Local', 'Programs', 'Python', 'Python39', 'Lib', 'site-packages', 'PyQt5', 'Qt5', 'plugins'), os.path.join(os.path.expanduser('~'), 'AppData', 'Roaming', 'Python', 'Python39', 'site-packages', 'PyQt5', 'Qt5', 'plugins'), ]) elif system == "Darwin": # macOS # macOS环境下的路径 possible_paths.extend([ os.path.join(project_root, '.venv', 'lib', python_version, 'site-packages', 'PyQt5', 'Qt5', 'plugins'), os.path.join(sys.prefix, 'lib', python_version, 'site-packages', 'PyQt5', 'Qt5', 'plugins'), '/usr/local/opt/qt5/plugins', # Homebrew Qt5 '/opt/homebrew/opt/qt5/plugins', # Apple Silicon Homebrew os.path.expanduser('~/Qt/5.15.2/clang_64/plugins'), # Qt官方安装 ]) elif system == "Linux": # Linux环境下的路径 possible_paths.extend([ os.path.join(project_root, '.venv', 'lib', python_version, 'site-packages', 'PyQt5', 'Qt5', 'plugins'), os.path.join(sys.prefix, 'lib', python_version, 'site-packages', 'PyQt5', 'Qt5', 'plugins'), '/usr/lib/x86_64-linux-gnu/qt5/plugins', '/usr/lib/qt5/plugins', ]) # 查找第一个存在的路径 valid_path = None for path in possible_paths: if os.path.exists(path) and os.path.exists(os.path.join(path, 'platforms')): valid_path = path break if valid_path: # 设置Qt插件路径 os.environ['QT_PLUGIN_PATH'] = valid_path os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = os.path.join(valid_path, 'platforms') # 设置平台特定的环境变量 if system == "Darwin": # macOS os.environ['QT_QPA_PLATFORM'] = 'cocoa' os.environ['QT_MAC_WANTS_LAYER'] = '1' # 禁用可能导致问题的Qt功能 os.environ['QT_LOGGING_RULES'] = 'qt.qpa.*=false' # 禁用Qt警告日志 elif system == "Windows": os.environ['QT_QPA_PLATFORM'] = 'windows' elif system == "Linux": os.environ['QT_QPA_PLATFORM'] = 'xcb' # 对于Linux,可能需要设置DISPLAY if 'DISPLAY' not in os.environ: os.environ['DISPLAY'] = ':0' print(f"✅ Qt插件路径设置成功: {valid_path}") return True else: print("⚠️ 警告:未找到Qt插件路径") return False # 设置Qt平台插件路径 set_qt_plugin_path() from PyQt5.QtWidgets import QApplication from PyQt5.QtCore import Qt from PyQt5.QtGui import QIcon from word_main_window import WordStyleMainWindow # 设置高DPI支持(必须在QApplication创建之前) QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True) QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps, True) def main(): """应用程序入口函数 - Word风格版本""" try: # 创建QApplication实例 app = QApplication(sys.argv) # 设置应用程序样式为Windows风格,更接近Word界面 app.setStyle('WindowsVista') # 设置应用程序属性 app.setApplicationName("MagicWord") app.setApplicationVersion("1.0.0") app.setOrganizationName("MagicWord") # 设置窗口图标(如果存在) icon_files = [ 'app_icon_32*32.png', 'app_icon_64*64.png', 'app_icon_128*128.png', 'app_icon_256*256.png', 'app_icon.png' ] icon_path = None for icon_file in icon_files: test_path = os.path.join(project_root, 'resources', 'icons', icon_file) if os.path.exists(test_path): icon_path = test_path break if icon_path and os.path.exists(icon_path): app.setWindowIcon(QIcon(icon_path)) else: # 使用默认图标 app.setWindowIcon(QIcon()) # 创建Word风格的主窗口 main_window = WordStyleMainWindow() main_window.show() # 启动事件循环并返回退出码 exit_code = app.exec_() sys.exit(exit_code) except Exception as e: # 打印详细的错误信息 print(f"应用程序发生未捕获的异常: {e}") traceback.print_exc() sys.exit(1) if __name__ == "__main__": main()