如何实现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
相关产品推荐
相关产品推荐

