2015-01-03 5 views
0

Я делаю игру с Pygame, у которой есть несколько кнопок, при касании специальной кнопки открывается другой .exe-файл. Я делаю это таким образом;Python-Pygame os.system как закрыть MAIN file-Pygame screen

os.system("filename.exe") 

Но экран Pygame остается на заднем плане, я хочу, чтобы закрыть этот экран, когда пользователь нажимает на эту кнопку и открыть этот файл с расширением .exe. Я попробовал это;

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

Теоретически это должен быть рабочий, открытый .exe-файл после этого выхода из Pygame. Но это не работает, файл .exe открыт succesfuly, но экран Pygame по-прежнему остается на заднем плане, и если я касаюсь его, давая ошибку Pygame перестает работать.

Как это исправить? Когда откроется этот специальный файл .exe, закройте экран Pygame ?

ответ

0

os.system wait program terminate; следующая строка pygame.quit не будет выполнена до окончания процесса. Вместо os.system, вы можете использовать subprocess.Popen, не ждать окончания работы программы (или любой другой функции, которые не ждать окончание процесса):

import subprocess 

.... 


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

Ну на самом деле это не будет работать, если я запускаю игру с IDLE (f5) но теперь возникает другая проблема. Когда я пытаюсь запустить свою игру с двойным щелчком или с помощью терминала (cmd), он не открывает этот .exe-файл. Просто закрываем экран Pygame. Зачем ? –

+0

@grrr, вы видите сообщение об ошибке в терминале? Возможно, текущий рабочий каталог не содержит файл. Попробуйте указать полный путь к исполняемому файлу. – falsetru

+0

К сожалению нет, они находятся в одном каталоге, я в этом уверен. Также я открываю терминал в этом каталоге. Нет сообщения об ошибке, ничего плохого, кроме того, что он не открывает файл .exe. Я пытаюсь понять, почему. –