似乎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,则上下文管理器会执行预期的操作。