前提・実現したいこと
wxPython でGUIアプリケーションを作成しています。
MainLoop 中に発生した例外(例えばボタン押下時のイベント処理で ValueError が発生した、など)すべてに対して同じ処理(サンプルの例ではポップアップ表示)を実行したいのですが、イベント毎に処理を記載せずに行う方法はないでしょうか?
ご存知であればご教示頂けると幸いです。よろしくお願いいたします。
サンプルソースコード
python
1import wx 2 3 4class MyForm(wx.Frame): 5 6 def __init__(self): 7 wx.Frame.__init__(self, None, title="TEST") 8 panel = wx.Panel(self) 9 h_sizer = wx.BoxSizer(wx.HORIZONTAL) 10 11 b1 = wx.Button(panel, wx.ID_ANY, "Button1") 12 b1.Bind(wx.EVT_BUTTON, self.onclicked_b1) 13 14 b2 = wx.Button(panel, wx.ID_ANY, "Button2") 15 b2.Bind(wx.EVT_BUTTON, self.onclicked_b1) 16 17 h_sizer.Add(b1, 0, wx.ALIGN_LEFT) 18 h_sizer.Add(b2, 0, wx.ALIGN_LEFT) 19 panel.SetSizer(h_sizer) 20 21 def onclicked_b1(self, event): 22 print("Label of pressed button = Button1") 23 try: 24 raise ValueError 25 except ValueError: 26 # ここの処理を個別に書かずにMainLoop中に発生したすべてのValueErrorに対して実施したい 27 wx.LogError('Value_Error raised') 28 29 def onclicked_b2(self, event): 30 print("Label of pressed button = Button2") 31 try: 32 raise IndexError 33 except IndexError: 34 # ここの処理を個別に書かずにMainLoop中に発生したすべてのIndexErrorに対して実施したい 35 wx.LogError('Index_Error raised') 36 37 38if __name__ == "__main__": 39 app = wx.App(False) 40 frame = MyForm().Show() 41 app.MainLoop() 42
補足情報(FW/ツールのバージョンなど)
Python 3.6.4
wxPython 4.0.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/01 03:50