我们在我们的项目中使用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()。哪些适用于Python2.3。在Python2.7中,它崩溃了。因此,我们在onInit()函数中添加了self.MainLoop(),该函数停止了崩溃问题,但不会从MainLoop()中出来,因此不会在该行之后执行代码。 现在我已经添加app.MainLoop(),正如你所说,它工作正常。 非常感谢您的帮助。 – user977601