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

GUI开启时后台算法运行异常:需持续执行且重新生成Output

问题解决思路与修正代码

核心问题分析

  • 原GUI窗口调用read(close=True),窗口打开后会立即关闭,无法保持界面持续运行并接收交互事件
  • job()函数仅引用Output变量,既没有实现重新生成Output的逻辑,也没有更新GUI表格的代码
  • 缺失schedule和time模块的导入,后台定时任务无法正常触发
  • 未将GUI事件循环与后台定时任务结合,导致两者无法同时运行

修正后的代码

import PySimpleGUI as sg
import pandas as pd
import schedule
import time

# 替换成你的实际算法逻辑:每次调用生成全新的Output数据
def generate_new_output():
    # 示例:生成测试数据,这里替换为你的算法代码
    raw_data = {
        'Match_Acc.': [1.2, 0.8, 1.5, 1.0],
        'Result': ['Pass', 'Fail', 'Pass', 'Pass'],
        'Column1': [10, 20, 30, 40],
        'Column2': ['A', 'B', 'C', 'D'],
        'Column3': [True, False, True, True]
    }
    df = pd.DataFrame(raw_data)
    # 保留符合精度要求的数据
    return df[df['Match_Acc.'] >= 1]

# 初始化GUI配置
font = ('Arial', 11)
sg.theme('BrownBlue')

# 初始生成数据并创建表格
Output = generate_new_output()
headings = Output.columns.tolist()
table_data = Output.values.tolist()

layout = [
    [sg.Table(table_data, headings=headings, justification='left', key='-TABLE-', auto_size_columns=True)],
    [sg.Button('Run'), sg.Button('Exit')]
]

window = sg.Window("Overview", layout, font=font)

# 后台任务逻辑:重新生成数据并更新GUI
def job():
    global Output, window
    # 重新生成Output
    Output = generate_new_output()
    # 更新表格内容
    new_table_data = Output.values.tolist()
    window['-TABLE-'].update(values=new_table_data)

# 设置定时任务,每5秒执行一次
schedule.every(5).seconds.do(job)

# 主循环:同时处理GUI事件与后台任务
while True:
    # 非阻塞读取事件,超时100ms避免卡住定时任务
    event, values = window.read(timeout=100)
    
    # 处理GUI交互
    if event == sg.WIN_CLOSED or event == 'Exit':
        break
    if event == 'Run':
        # 手动触发一次数据更新
        job()
    
    # 执行待处理的定时任务
    schedule.run_pending()

# 关闭窗口释放资源
window.close()

关键修改点

  • 新增generate_new_output()函数,专门负责每次重新生成Output(替换为你的实际算法即可)
  • 将GUI窗口改为持久化对象,通过timeout参数实现非阻塞事件循环,避免阻塞后台任务
  • job()函数中添加GUI表格更新逻辑,确保新生成的结果能实时显示
  • 补充schedule和time模块导入,修复定时任务依赖问题
  • 将定时任务执行逻辑融入主循环,保证GUI响应与后台任务同时运行
  • 保留Run按钮的手动触发功能,方便测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:50:46