Files
cmbuyer/client/src/cmbuyer_client/app.py
T

58 lines
2.0 KiB
Python

"""采购工具的最小桌面应用入口。"""
from __future__ import annotations
import sys
from collections.abc import Sequence
from .logging_policy import configure_application_logger
from .runtime import RuntimePaths
def select_application_argv(argv: Sequence[str] | None) -> list[str]:
"""保留调用方明确给出的空参数列表,避免改变测试或打包入口的语义。"""
return list(sys.argv if argv is None else argv)
def main(argv: Sequence[str] | None = None) -> int:
"""启动只表达当前工程状态的桌面外壳。
真机控制和采购执行必须在完成取证并实现后才可接入,因此此入口不导入
uiautomator2,也不提供任何会影响采购或支付状态的命令。
"""
try:
paths = RuntimePaths.default()
logger = configure_application_logger(paths)
except OSError as error:
print(f"无法创建采购工具运行目录:{error}", file=sys.stderr)
return 1
try:
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QLabel, QMainWindow
except ImportError:
logger.error("缺少 PySide6,无法启动桌面界面。")
print("无法启动采购工具:缺少 PySide6。请先安装 requirements.txt 中的依赖。", file=sys.stderr)
return 2
application = QApplication.instance() or QApplication(select_application_argv(argv))
application.setApplicationName("采购工具")
window = QMainWindow()
window.setWindowTitle("采购工具")
window.setAccessibleName("采购工具")
window.setMinimumSize(420, 240)
window.resize(560, 320)
message = QLabel("应用骨架已初始化。\n采购执行功能尚未启用。")
message.setAlignment(Qt.AlignmentFlag.AlignCenter)
message.setWordWrap(True)
message.setAccessibleName("当前状态")
window.setCentralWidget(message)
logger.info("应用已启动;采购执行功能尚未启用。")
window.show()
return application.exec()