You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python检测多列表是否含'FAIL'及PyQt5弹窗异常修复

问题原因分析
  • 核心错误出在checkResult_na的条件判断:当前写法中,or连接的列表(比如self.rxtxResult)只要非空就会被判定为True——哪怕列表里全是PASS,也会触发失败窗口,完全偏离了"检查是否存在FAIL"的逻辑。
  • 附带问题:
    • checkbox_ledNA函数里的self.checkP1_na结果没有添加到LedResult列表,导致该检查项的结果永远不会被纳入最终判断。
    • get_output_rx函数中,self.rxtxResult未初始化,且append和return语句被放在循环的不可达区域,结果根本不会被加入列表。
修正方案

1. 修复核心条件判断逻辑

修改checkResult_na函数,确保每个列表都检查是否包含FAIL,同时兼容列表未初始化的情况:

def checkResult_na(self):    
    # 处理列表可能未定义的情况,默认转为空列表
    ping_result = getattr(self, 'pingTestResult', [])
    rxtx_result = getattr(self, 'rxtxResult', [])
    led_result = getattr(self, 'LedResult', [])
    conf_result = getattr(self, 'confResult', [])
    
    # 逐个检查所有列表中是否存在FAIL
    has_fail = ('FAIL' in ping_result) or ('FAIL' in rxtx_result) or ('FAIL' in led_result) or ('FAIL' in conf_result)
    
    if has_fail:
        self.failWindow()
    else:
        self.passWindow()

2. 修复其他代码缺陷

  • 补充checkbox_ledNA中遗漏的列表添加操作:
def checkbox_ledNA(self):
    self.LedResult = []
    self.LED_pass_na = 'PASS'
    self.LED_fail_na = 'FAIL'
    pass_fail_na = lambda state_na: self.LED_pass_na if state_na == 2 else self.LED_fail_na
    self.checkPWR_rot_na = pass_fail_na(self.ui.PWR_rot_NA.checkState())
    self.LedResult.append(self.checkPWR_rot_na)
    self.checkPWR_grun_na = pass_fail_na(self.ui.PWR_grun_NA.checkState())
    self.LedResult.append(self.checkPWR_grun_na)
    self.checkP1_na = pass_fail_na(self.ui.Port1_NA.checkState()) 
    self.LedResult.append(self.checkP1_na)  # 补充该行,将Port1的检查结果加入列表
  • 修复get_output_rx的逻辑错误,确保结果能正确存入列表:
def get_output_rx(self):
    # 初始化列表,避免未定义报错
    if not hasattr(self, 'rxtxResult'):
        self.rxtxResult = []
    
    self.size = self.ser.inWaiting()           
    if self.size > 190:
        self.rx = 'PASS'
        print(self.size, ' RX-Leitung ', self.rx)
    else:
        self.rx = 'FAIL'
        print(' RX-Leitung ', self.rx)
    
    self.rxtxResult.append(self.rx)
    return self.rx

原代码中的while循环完全多余(第一次判断就会break),直接简化为单次判断即可。

内容的提问来源于stack exchange,提问作者Asram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:20:43