我很抱歉口头描述。在
我在一个名为applicationwindow.py
的文件中有一个wxPython应用程序,它位于一个名为garlicsimwx
的包中。当我通过启动上述文件启动应用程序时,一切都很好。但是,我在一个文件夹中创建了一个文件rundemo.py
,该文件夹包含garlicsimwx
包,该包也运行该应用程序。但是,当我使用rundemo.py
时,当主wx.Frame
导入garlicsimwx
的子包,即simulations.life
时,由于某种原因,我的应用程序的一个新实例被创建(即,弹出一个新的相同窗口)
我已经试着一个接一个地逐步执行这些命令,尽管只有在导入子包之后才会出现错误,import
语句并没有直接导致它。只有当控件返回PyApp.MainLoop
时,第二个窗口才会打开。在
我该怎么阻止这一切?在
明白了:没有
在我的
rundemo
文件中。这实际上是一个multiprocessing
问题:新窗口是在单独的进程中打开的。在我想你的某个模块中有这样的代码:
第一次导入此模块时将创建框架。要防止这种情况发生,请使用常见的Python习惯用法:
^{pr2}$我猜对了吗?在
您可以创建一个像
g_window_was_drawn
这样的全局布尔变量,并在创建窗口的函数中检查它。该值在程序开始时为false,在第一次创建窗口时将变为True。创建窗口的函数将检查g_window_was_drawn
是否已经为真,如果是,它将抛出异常。然后您将得到一个很好的stacktrace,告诉您谁负责执行这个函数。在我希望这能帮你找到它。很抱歉口头解决;)
相关问题 更多 >
编程相关推荐