执行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
相关产品推荐
相关产品推荐

