パスワードを忘れた? アカウント作成
532937 journal

tuneoの日記: あれげメモ:wxPythonプログラミング事始め-アプリケーションの終了

日記 by tuneo

……というタイトルと裏腹に、実はもう一週間くらい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の存在を知らなかったので、拙作の小さなアプリでは「閉じる」ボタンを押したら問答無用で落っこちてました。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

普通のやつらの下を行け -- バッドノウハウ専門家

読み込み中...