В моем приложении VsCode wxPython под Windows я связываю событие close со своей функцией следующим образом:
import wx
class MyFrame(wx.Frame):
def __init__(self, title):
wx.Frame.__init__(self, None, title = title, pos = (150, 0))
self.Bind(wx.EVT_CLOSE, self.OnClose)
# Other stuff ...
def OnClose(self, event):
print("closing")
self.Destroy()
app = wx.App()
top = MyFrame("My App")
top.Show()
app.MainLoop()
print("done")
Теперь я могу увидеть , что он вызывается при закрытии верхнего уровняокно (a wxFrame
), когда появляются сообщения closing
и done
.Само окно также исчезает.
Однако VsCode считает, что приложение все еще работает, поскольку все еще доступны элементы управления отладкой:
и консоль, которая запустила его (консоль отладки Python), не возвращается с приглашением.Только после того, как я нажму на кнопку «Стоп», командная строка снова появится в этой консоли.
Интересно, что если я запусту приложение вне VsCode, оно будет корректно завершено, возвращаясь в командную строку..