우리 프로젝트에서 Python2.3과 wxPython V2.4.2.4를 사용하고있었습니다. 그리고 잘 작동했습니다. 이제 우리는 Python2.7과 wxPython2.8.12.1로 업그레이드 할 것입니다. 우리 프로젝트는 새로운 버전으로 잘 컴파일됩니다. 그러나 코드에서 한 단계의 프로젝트에서 현재 창을 파괴 한 다음 & 새 창을 다시 엽니 다. 그리고 새 창을 만든 후 코드가 실행되지 않는다는 것을 알았습니다. 이전 버전에서는 실행 중이었습니다.MainLoop()에서 나오지 않는다
다음 코드를 참조하십시오. "doRead 1"메시지를 표시 한 다음 창을 엽니 다. 그러나 "doRead 2"메시지는 표시하지 않습니다. 오래된 Python 버전에서는 "do Read 2"라는 메시지가 그 코드를 실행했다는 것을 의미합니다.
새 프로젝트의 OnInit (...) 함수에서 "self.MainLoop()"라인에서 나오지 않습니다. 그러나 오래된 프로젝트에서 다음 라인을 실행하고 나오고있었습니다.
-----------------------------------------
Here is the code:
#Close existing window.
self.Destroy()
print 'doRead 1'
#create new window
app = App()
print 'doRead 2'
app.frame.saveContents()
------------------------------------
class App(wx.App):
"""Application class.
"""
def OnInit(self):
wx.InitAllImageHandlers()
resetOptions()
setOptions()
self.frame = pdtpFrame()
self.frame.SetTitle(std.getTitle())
self.frame.Show()
self.SetTopWindow(self.frame)
self.MainLoop()
return True
def main():
""" Start up the pdtp main window application.
"""
app = App()
if __name__ == '__main__':
main()
답장을 보내 주셔서 감사합니다. 당신의 대답은 내가 원인에 도달하는 것을 도왔습니다. 실제로 현재 창을 파괴하고 새 창을 만드는 곳의 오래된 프로젝트에서는 app.MainLoop()을 작성하지 않았습니다. 파이썬 2.3에서 작동했습니다. Python2.7에서는 충돌이 발생했습니다. 따라서 우리는 onInit() 함수에서 self.MainLoop()을 추가했습니다.이 함수는 충돌 문제를 중단했지만 MainLoop()에서 나오지 않으므로 해당 행 다음에 코드를 실행하지 않습니다. 이제 app.MainLoop()을 추가했는데 제대로 작동합니다. 도움을 주셔서 감사합니다. – user977601