#!/usr/bin/env python3 """ 调试UI状态显示问题 """ import sqlite3 from pathlib import Path def check_experiment_status(): """检查实验状态""" print("检查实验状态") print("=" * 40) try: db_path = Path(__file__).parent / "experiments.db" db = sqlite3.connect(str(db_path)) cur = db.cursor() # 查询工单 11223345 的实验记录 cur.execute(""" SELECT id, work_order_no, start_ts, end_ts, created_at FROM experiments WHERE work_order_no = '11223345' ORDER BY id DESC LIMIT 5 """) results = cur.fetchall() if results: print("工单 11223345 的实验记录:") for row in results: exp_id, work_order, start_ts, end_ts, created_at = row # 判断状态 if start_ts and end_ts: status = "已完成" elif start_ts: status = "进行中" else: status = "等待开始" print(f" ID: {exp_id}") print(f" 工单: {work_order}") print(f" 创建: {created_at}") print(f" 开始: {start_ts or '未开始'}") print(f" 结束: {end_ts or '未结束'}") print(f" 状态: {status}") print("-" * 30) else: print("没有找到工单 11223345 的记录") # 查询所有等待开始的实验 cur.execute(""" SELECT id, work_order_no, created_at FROM experiments WHERE start_ts IS NULL ORDER BY id DESC LIMIT 10 """) waiting_results = cur.fetchall() print(f"\n当前等待开始的实验 ({len(waiting_results)} 个):") if waiting_results: for row in waiting_results: exp_id, work_order, created_at = row print(f" ID: {exp_id} - 工单: {work_order} - 创建: {created_at}") else: print(" 没有等待开始的实验") db.close() except Exception as e: print(f"ERROR 检查失败: {e}") def main(): print("UI状态显示问题调试") print("=" * 50) print("问题: 实验已完成但UI仍显示'等待实验开始'") print("=" * 50) check_experiment_status() print("\n" + "=" * 50) print("问题分析:") print("1. 监控器正常工作 ✅ - 数据库已更新开始和结束时间") print("2. 状态变化检测正常 ✅ - load_status_int 1->0 变化被检测") print("3. UI状态显示异常 ❌ - 界面仍显示'等待实验开始'") print("\n可能原因:") print("1. UI没有检测到实验完成") print("2. UI刷新逻辑有问题") print("3. UI显示的是错误的实验记录") print("4. 等待状态没有正确退出") print("\n解决方案:") print("1. 手动刷新UI界面") print("2. 检查UI的等待状态逻辑") print("3. 确保监控器回调正确触发UI刷新") print("4. 重启程序重新测试") if __name__ == "__main__": main()