2011-07-18 41 views
0

[キャンセル]をクリックするとキャンセルされます... [OK]をクリックすると、ダイアログが再び表示されます。これをどうすれば解決できますか?wxPythonウィンドウが閉じない

def quitApp(self, event): 
    dial = wx.MessageDialog(None, 'Are you sure you want to quit?','Quit', wxYES | wxNO) 
    if dial.ShowModal() == wxID_YES: 
     self.Close(true) 
+0

問題を診断するのに十分なコンテキストコードがありません。 'self'はあなたのAppサブクラスか、あなたのFrameか、何ですか? –

+0

これは私の "フレーム"クラス内のメソッドです。 –

+0

どのようにquitAppを呼び出していますか? –

答えて

5

quitAppがシステムのCloseEventハンドラによって呼び出されることはありますか?その場合、self.Close(true)は新しいCloseEventをトリガします。その場合、quitAppが再度呼び出され、新しいダイアログが表示されます。

self.Close(true)の代わりにsys.exit(0)を使用してアプリケーションを終了することをお勧めします。

+0

これは本当に強い可能性と素晴らしい答えです。 –

+0

ああああ!ありがとう。これで修正されました。 –

2

より多くを知らなくても(私のコメントを参照してください)、私はいくつかのスタブを取ることができます:

  1. selfアプリであれば、self.ExitMainLoop()は、プログラムを終了します。
  2. selfがフレームの場合、self.Close(True)が適切です。
  3. selfが他にあれば、sys.exit(0)はPythonインタープリタをシャットダウンしてプログラムを終了します。
1

コードを追加する必要があります。他の何かがquitApp機能を引き起こしているようです。あなたの機能はループしません。閉じようとしていて、イベントが呼び出され続けるので、ループしている可能性があります。代わりにself.Destroy()を使用して、フレームを閉じてください。

関連する問題