プロジェクトでPython2.3とwxPython V2.4.2.4を使用していました。そして、うまくいきました。今、Python2.7とwxPython2.8.12.1にアップグレードしています。私たちのプロジェクトは新しいバージョンでうまくコンパイルされています。しかし、コード内の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