按下tkinter上的退出按钮后无法完成处理

时间:2017-04-11 18:25:21

标签: python tkinter process

我的问题是我在tkinter中创建了一个GUI,它绘制了一些地图和信息,这部分工作正常,但是当我尝试用窗口的X按钮关闭程序时,该过程仍在运行,我有使用停止按钮终止进程,因为他们建议在CMD中运行读取in this question,我在Windows上执行它并检查任务管理器,关闭程序后进程仍然继续,我该怎么做才能解决这个问题? 这是脚本的结构:

#This is some figure where i plot the maps
#marco de imagen principal
f = plt.figure(figsize=(3,3))
axe = f.add_subplot(111)
#axe = f.add_subplot(111)
#plt.axis('off')
axe.format_coord = lambda x, y: ''

#marco de ploteo de mapa
figu=plt.Figure(figsize=(2,2))
#ploteo=figu.add_subplot(111)
ploteo=figu.add_axes([0, 0, 1, 1])
ploteo.format_coord = lambda x, y: ''
plt.axis('off')


Class Inicio(tk.Tk):
     def __init__(self, *args, **kwargs):
     #I initialize all the menu, labels, variables and canvas and some other functions

     def libro(self):

     def onpress(self,event):
     .
     .
     .
     and more funtions


ex = Inicio()
ex.geometry("1280x720")

ex.mainloop()

问题可能与情节有关吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用协议来处理X按钮的关闭?

import tkMessageBox as tmb

def __init__(self, *args, **kwargs):
    # All your stuff
    self.protocol('WM_DELETE_WINDOW', self.close_app)

def close_app(self):
    if tmb.askokcancel("Close", "Are you sure...?"):
        self.destroy()

这假设self.destroy()通过root应用于您的ex.mainloop() TKinter框架,因为它是您最外层的电话。 self.destroy()创建的框架上的ex.mainloop()也将结束mainloop()的{​​{1}}。