VsCode, кажется, продолжает запускать приложение wxPython, когда оно должно было остановиться - PullRequest
0 голосов
/ 03 марта 2019

В моем приложении 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 считает, что приложение все еще работает, поскольку все еще доступны элементы управления отладкой:

enter image description here

и консоль, которая запустила его (консоль отладки Python), не возвращается с приглашением.Только после того, как я нажму на кнопку «Стоп», командная строка снова появится в этой консоли.

Интересно, что если я запусту приложение вне VsCode, оно будет корректно завершено, возвращаясь в командную строку..

1 Ответ

0 голосов
/ 03 марта 2019

Попробуйте wx.Exit() в случае, если что-то еще открыто / работает, не осознавая этого.

wx.Exit () Выход из приложения после вызова wx.App.OnExit.

Следует использовать только в чрезвычайной ситуации: обычно кадр верхнего уровня следует удалять (после удаления всех остальных кадров), чтобы завершить приложение.См. Wx.CloseEvent и wx.App.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...