# -*- coding: UTF-8 -*-
import wx
class App(wx.Frame):
""" GUI """
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(300,300), style=wx.DEFAULT_FRAME_STYLE)
# 閉じるイベント
self.Bind(wx.EVT_CLOSE, self.frame_close)
# パネル
p = wx.Panel(self, wx.ID_ANY)
self.Show()
def frame_close(self, event):
""" 閉じたときに発生するイベント """
wx.MessageBox('イベント発生!', 'title')
#event.Skip()
self.Destroy()
app = wx.App()
App(None, -1, 'タイトル')
app.MainLoop()
<結果> ↓ ↓ ↓
上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、pythonでGUIツールを作る ~基礎編~をご覧ください。
続いて解説を行います。
- - - 詳細 - - - - - - - - - - - - -
self.Bind(wx.EVT_CLOSE, self.frame_close)
この記述で、フレームにクローズイベントを設定しています。 def frame_close(self, event):
""" 閉じたときに発生するイベント """
wx.MessageBox('イベント発生!', 'title')
#event.Skip()
self.Destroy()
この部分が閉じたときに処理したい内容です。今回の例ではメッセージボックスを表示させるようにしています。
ここで注意点ですが、クローズイベントを設定した際、その処理関数では必ず「フレームの破棄」もしくは「イベントのスキップ」を行わなければなりません。
これをしないと、×ボタンを押してもフレームが表示されたままの状態となってしまい、閉じることができません。
くれぐれもご注意ください。
- - - - -
- - - - - - - - - - - - -私はクローズイベントをよく使用しています。
例えば、設定ファイルと組み合わせて、閉じたときのフレームの位置やチェックボックス・ラジオボックスのチェック状態を取得し、その情報を保存しておく、などです。
みなさん様々なソフトを使用していらっしゃることと思いますが、たまに終了処理が長いものがありますよね?
そういったものはクローズイベントにいろんな処理を組み込んでいるのでしょう。
0 件のコメント:
コメントを投稿