单击tkinter frame
后,我有一个 export 按钮,单击该按钮会将一些数据导出到CSV文件。我在同一帧中也有一个 logout 按钮。我在 logout 按钮上添加了一个功能,以带我主frame
并杀死当前帧。
现在,当我单击 export 按钮时,将需要一分钟才能完成。在此之前,如果单击登出按钮,它将带我进入主frame
。但是导出过程正在落后并且不会被杀死。我仍在获取csv文件。
一旦我单击注销按钮,我也想终止正在运行的导出function
。我该怎么办?
我使用了self.destroy()
,但是导出功能没有被终止。
下面的几行是我的代码的一部分,主要代码有400多行。 PageOne
是我具有 export 和 Logout 按钮的框架。
class PageOne(ttk.Frame):
def __init__(self, master):
ttk.Frame.__init__(self, master, height=800, width=1400)
self.logOut_btn = ttk.Button(self, text="Logout", command=self.logOut)
self.logOut_btn.place(x=1280, y=15)
self.export = ttk.Button(self, text="Export", command=self.export_cubeData)
self.export.place(x=620, y=y1+50)
self.exportPath = ttk.Label(self, text="Export Path", font='Helvetica 12 bold')
self.exportPath.place(x=430, y=y1+100)
self.entry_exportPath = ttk.Entry(self)
self.entry_exportPath.place(x=540, y=y1+100, width=450)
final_df = pd.Dataframe()
def logOut(self):
self.destroy()
self.master.switch_frame(StartPage)
with TM1Service(**config['TM1']) as tm1:
tm1.logout()
def setFlag(self):
self.flag = 1
def export_cubeData(self):
exportPath = self.entry_exportPath.get()
for i in range(10):
self.update()
final_df.to_csv(exportPath)
答案 0 :(得分:0)
我曾经遇到过同样的问题。我的解决方案只是让我的任务在单独的线程上运行,我将其标记为deamon。这样做是当我销毁所有其他线程(读取window.destroy)时,仅剩下此任务线程,并且由于将其设置为守护进程线程,因此程序成功终止。
编辑:
如果您不想完全结束Python程序,则应该查看this answer。