2017-04-11 182 views
0

私の問題は、tkinterでマップと情報をプロットし、その部分はうまくいくが、Xボタンでプログラムを閉じるときプロセスはまだ実行されており、私は停止ボタンでプロセスを終了する必要があります。in this question彼らはCMDで実行することをお勧めします。私はウィンドウでそれを行い、タスクマネージャーをチェックし、私はそれを修正するために何ができますか?ここ は、スクリプトの構造である:tkinterの終了ボタンを押した後にプロセスを終了できない

#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() 

たぶん問題は、プロットに関係していますか?

+0

Windows 7、Python 2.7で問題を再現できませんでした。たぶん問題はあなたの「Inicio」クラスの何かに起因するかもしれません。それとも、ハードウェア固有のバグでしょうか? (http://stackoverflow.com/questions/39601107/python-tkinter-window-not-closing) – Josselin

+0

mmm私は特定のバグだとは思わない、私はすでにUbuntuとWindowsで試してみたが、それでも問題は続く。とにかく感謝:) – Ivan

答えて

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()ex.mainloop()経由でroot Tkinterのフレームに適用されていることを前提としています。 によって作成されたフレーム上のself.destroy()は、rootの場合にはmainloop()も終了します。

+0

ありがとう、私はあなたの指示に従ったが、まだプロセスはバックグラウンドで続けるが、私は 'exit()'によって 'self.destroy()'を変更し、完全に働いた! – Ivan

関連する問題