wxPython は、コンテキスト マネージャの__exit__
呼び出しが発生しないように SIGINT をインターセプトしているようです。この動作を修正する方法はありますか?
この問題を示す小さなテスト プログラムを次に示します。
import wx
import time
class Printer(object):
def __enter__(self):
return self
def __exit__(self, x, y, z):
print('### Context manager called!')
with Printer() as p:
app = wx.App()
frame = wx.Frame(None)
frame.Show()
app.MainLoop()
#time.sleep(1000)
このように実行して Ctrl+C を押すと、出力は生成されません。wx コードを sleep ステートメントに変更して Ctrl+C を押すと、コンテキスト マネージャーは期待どおりに動作します。