我正在使用带有多个 *.py 脚本的 wxpython 编写游戏,当我按下主脚本中的一个按钮时,我想启动另一个脚本。
示例:我为具有多个选项的游戏菜单窗口启动了一个 *.py 脚本。当我按下选项按钮时,它将启动分配给该按钮的另一个脚本并打开选项窗口
我怎样才能做到这一点?谢谢
与其在单击按钮时启动另一个 *.py 文件,不如重新考虑如何组织代码。将每个窗口分成不同的 python 脚本可能不是要走的路。这需要你对子进程做一些混乱的事情,你最终可能会遇到大量的竞争条件。
更好的方法是将代码组织成模块,将它们导入主程序,并在需要时调用它们。
例如,如果您将与游戏配置有关的所有内容都放在一个settings
模块中并导入它,而不是告诉操作系统使用 Python 解释器运行脚本,您可以只settings.show_window()
从主程序中调用。
启动一个新的 Python 脚本通常是使用 os.system 或 subprocess 完成的,但听起来你想要做的只是在 wxPython 中打开另一个框架或对话框。如果是这样,那么只需将所有辅助框架代码放入一个单独的文件中并将其导入主文件。然后在主框架的按钮事件处理程序中实例化框架并显示它。如果您正在显示一个对话框,这同样适用。您可以在这里看到显示辅助框架的一般想法:http: //www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/(虽然它隐藏了主框架在那个例子中)。
好吧,我建议os
仅在您想在脚本关闭之前运行脚本的情况下才使用模块,或者换句话说,例如在地面上制作主脚本并专注于选项窗口
os.system('script_name.py'
在 Windows 中使用) <
或os.system('python script.py')
< 在 Linux 中授予权限后
您是否尝试过使用子流程?
您可以将按钮事件分配给子进程以启动另一个 py 脚本。