tuneoの日記: あれげメモ:wxPythonプログラミング事始め-アプリケーションの終了
……というタイトルと裏腹に、実はもう一週間くらいwxPythonしているので、ぐぐってもわからない問題を自力で(wxWidgetsのリファレンスを見たりして)調べてわかったことをメモ。
Windowsでタイトルバーの「閉じる」ボタンを押してクローズしたときにwxWidgetsはEVT_CLOSEイベントを送出するので、こいつのイベントハンドラを定義してやれば良い。終了確認を入れたければこんな感じ。
class MyApp(wx.App):
def OnInit(self):
self.frame = wx.Frame()
self.SetTopWindow(self.frame)
# その他いろいろ
# イベントハンドラの登録
self.frame.Bind(wx.EVT_CLOSE, self.ExitHandler)
# さらにいろいろ
self.frame.Show()
return True
def ExitHandler(self):
dlg = wx.MessageDialog(parent = self.frame, message = u"終了します。よろしいですか?", caption = u"終了確認", style = wx.YES_NO)
result = dlg.ShowModal()
if result == wx.ID_OK:
wx.Exit()
return
後はメニューバーをつけた時に「ファイル」→「終了」メニューがクリックされたときやツールバーの終了ボタンが押されたときのハンドラとして同じものをBind()してやるととGUIアプリらしくなる。
……はじめはwx.EVT_CLOSEの存在を知らなかったので、拙作の小さなアプリでは「閉じる」ボタンを押したら問答無用で落っこちてました。
あれげメモ:wxPythonプログラミング事始め-アプリケーションの終了 More ログイン