防止wxPython吞下SIGINT上下文管理器出口

时间:2014-05-21 15:35:51

标签: python wxpython wxwidgets sigint contextmanager

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

0 个答案:

没有答案