2

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 を押すと、コンテキスト マネージャーは期待どおりに動作します。

4

0 に答える 0