【问题标题】:Python-Pygame os.system how to close MAIN file-Pygame screenPython-Pygame os.system 如何关闭 MAIN 文件-Pygame 屏幕
【发布时间】:2015-01-03 04:08:38
【问题描述】:

我正在使用带有一些按钮的 Pygame 制作游戏,当触摸一个特殊按钮时,它会打开另一个 .exe 文件。我就是这样做的;

os.system("filename.exe")

但是 Pygame 屏幕停留在后台,我想在用户单击该按钮并打开该 .exe 文件时关闭该屏幕。我试过这个;

#codes
...
...
if action == "play":
    os.system("filename.exe")
    pygame.quit()
    quit()

理论上它应该可以工作,打开 .exe 文件后退出 Pygame。但这不起作用,.exe 文件已成功打开,但 Pygame 屏幕仍停留在后台,如果我触摸它,则会出现错误 Pygame 停止工作。

我该如何解决这个问题?当那个特殊的 .exe 文件打开时,关闭 Pygame 屏幕?

【问题讨论】:

    标签: python python-3.x operating-system pygame python-3.4


    【解决方案1】:

    os.system等待程序终止;下一行pygame.quit 在进程终止之前不会执行。除了os.system,您可以使用不等待程序终止(或任何其他不等待进程终止的功能)的subprocess.Popen

    import subprocess
    
    ....
    
    
    if action == "play":
        subprocess.Popen(["filename.exe"])
        pygame.quit()
        quit()
    

    【讨论】:

    • 实际上,如果我使用 IDLE(f5) 运行游戏,它确实可以工作,但现在出现了另一个问题。当我尝试通过双击或使用终端(cmd)运行我的游戏时,它没有打开那个 .exe 文件。只需关闭 Pygame 屏幕。为什么?
    • @grrr,您在终端中看到任何错误消息吗?也许当前工作目录不包含该文件。请尝试指定可执行文件的完整路径。
    • 不幸的是,它们在同一个目录中,我确信这一点。我也在那个目录中打开终端。没有错误消息,除了没有打开 .exe 文件外没有任何问题。我试图理解为什么。
    • @grrr,当前工作目录!= 包含 python 脚本的目录。
    • @grrr,你可以试试shell=True吗? subprocess.Popen(["filename.exe"], shell=True)
    猜你喜欢
    • 2022-01-23
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2016-12-06
    • 1970-01-01
    • 2017-02-16
    相关资源
    最近更新 更多