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

如何实现Pysimplegui的Exit按钮终止Python脚本及Pause休眠功能

问题解决与代码修正

原代码的核心问题

  • 窗口创建后立刻执行window.close(),导致界面无法正常显示
  • Exit按钮仅退出内层循环,外层的while True仍会继续运行,无法终止整个脚本
  • 未实现Pause按钮的休眠逻辑
  • 错误使用os._exit()导致脚本异常

修正后的代码

import PySimpleGUI as sg
import pandas as pd
import time
import sys

def function():
    # 这里写你的自定义函数逻辑
    pass

while True:
    # 这里写你的循环执行逻辑
    # 示例:生成测试数据
    data = {'data': [5, 12, 8]}
    df = pd.DataFrame(data)

    if any(df['data'] > 10):
        headings = df.columns.tolist()
        data_values = df.values.tolist()

        layout = [
            [sg.Table(data_values, headings=headings, justification='left', key='-TABLE-')],
            [sg.Button('Pause'), sg.Button('Exit')]
        ]

        window = sg.Window("Name", layout)

        while True:
            event, values = window.read()  # 去掉timeout,让窗口等待用户操作
            if event in (sg.WINDOW_CLOSED, 'Exit'):
                window.close()
                sys.exit()  # 终止整个脚本
            elif event == 'Pause':
                window.close()
                time.sleep(300)  # 休眠5分钟(300秒)
                break  # 退出内层循环,回到外层主循环

        # 内层循环结束后关闭窗口
        window.close()

关键修改说明

  • Exit按钮逻辑:点击Exit或关闭窗口时,先关闭窗口再调用sys.exit(),直接终止整个Python进程,确保脚本完全停止
  • Pause按钮逻辑:点击Pause后关闭当前窗口,调用time.sleep(300)休眠5分钟,随后退出内层循环回到主流程继续执行
  • 窗口生命周期优化:将window.close()移到内层循环退出后,保证窗口正常显示到用户完成操作
  • 替换os._exit():使用sys.exit()触发正常退出流程,避免异常崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:06:05