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

执行Python脚本时如何保持Tkinter窗口处于打开状态

解决方案

核心逻辑说明

tkinter的mainloop()属于阻塞式事件循环,窗口存活期间会阻塞后续同步代码的执行,因此你需要将文件读取、报告生成的业务逻辑全部放到GUI的回调函数中执行,不需要把逻辑写在mainloop()之后。

修正后可运行代码

import tkinter as tk
from tkinter import filedialog
import pandas as pd

# 全局变量存储选中的文件路径
file_abc = ""

def get_file():
    global file_abc
    # 修正原方法名错误、文件类型格式错误
    file_abc = filedialog.askopenfilename(
        title = "Select A File",
        filetypes=(("xlsx文件","*.xlsx"),("所有文件","*.*"))
    )

def generate_report():
    global file_abc
    if not file_abc:
        # 可自行扩展未选文件的提示逻辑
        return
    # 原mainloop之后的逻辑全部挪到这里
    print(file_abc)
    # 修正原读取excel的语法错误
    abc = pd.read_excel(file_abc, engine="openpyxl")
    # 此处补充后续生成报告的逻辑
    # *************
    # 报告生成逻辑结束
    # 如果生成完成后需要关闭窗口就放开下面的注释,不需要就保留窗口
    # window.destroy()

window = tk.Tk()
window.title("Get File")
window.geometry('1000x1000')

# 修正原按钮语法中fg缺少等号的错误
tk.Button(window,text="选择Excel文件",command=get_file,bg='#6eb5ff',fg='white',width=100).pack(pady=10)
# Run按钮绑定生成报告的函数,不再直接销毁窗口
tk.Button(window,text="生成报告",command=generate_report,bg='#b28dff',fg='white',width=100).pack(pady=10)

window.mainloop()

效果说明

点击选择Excel文件选中文件后,再点击生成报告即可直接执行读取文件、生成报告的全部逻辑,全程窗口保持打开状态,不会自动关闭,你也可以根据需要调整是否在报告生成完成后销毁窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:12:01