В коде есть два цикла «выполнения», поэтому он никогда не попадает во второй цикл.
Отступы в коде перепутаны - может быть, из-за вставки в SO? Подавляющее большинство программистов используют 4 пробела для отступа. Это, вероятно, хороший обычай для подражания.
Код также загружал «стартовое» изображение при каждой итерации цикла, в этом нет необходимости (если только он не изменяется на диске, в этом случае используйте os.stat()
для проверки изменений перед его повторной загрузкой).
Переработанный основной цикл:
folder = os.path.dirname(os.path.realpath(__file__))
start = pygame.image.load(os.path.join(folder, "wecvguh.png"))
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
command = "python AhjaiyCPT.py"
subprocess.call(command)
gameDisplay.fill(white)
gameDisplay.blit(start, (x,y))
pygame.display.update()
pygame.quit()
Если Вы находитесь в том же каталоге как matz.rb файл, несомненно, выполнят его как
$ ./matz.rb
и не просто
$ matz.rb
Вот сессия оболочки, демонстрирующая эту работу:
$ ls -la m*
-rwxr-xr-x 1 gareth gareth 32 8 Jan 08:46 matz.rb
$ cat matz.rb
#!/usr/bin/env ruby
puts "Matz"
$ matz.rb
-bash: matz.rb: command not found
$ ./matz.rb
Matz
Ваш файл не был создан в Windows, было это? Если это имеет \r\n окончания строки, которые нарушат удар. Можно открыть его с Vim и проверкой:
vi matz.rb
:set ff=unix
:wq
Если, когда Вы полный вкладкой "и следующие =" часть это говорит, что DOS, то это имеет неправильный формат файла. С другой стороны, выполненный dos2unix и попытка петлять снова:
apt-get install sysutils
dos2unix matz.rb
/usr/bin/env
часть прекрасна. Необходимо дать удару путь к matz.rb при выполнении его. Если Вы находитесь в каталоге с matz.rb, введите "./matz.rb". Каталог "." означает текущий каталог - удар не смотрит там по умолчанию при запущении программ (как Windows, делает).
Огибающая программа (/usr/bin/env) ищет исполняемый путь поиска - переменную окружения PATH - для ruby
программа, как будто Вы ввели его в командной строке и запускаете ту программу. Комментарий хижины не делает этого. Если Вы хотите дать свой сценарий другим людям, которым нельзя было бы установить рубин в том же месте как Вы, то необходимо использовать"#!/usr/bin/env ruby
"прокомментируйте так, чтобы это работало, пока они могут выполнить рубин путем ввода "рубина".
Мне не удалось видеть, что любой ответ указывает на Вас для изменения исполняемого режима файла, таким образом, Вы могли бы хотеть попытаться сделать
chmod +x matz.rb
прежде чем Вы пойдете и попытаетесь делать
./matz.rb
Также могло бы быть лучше не присоединить .rb расширение файла, такой имеет место для нормального рубина / сценарии направляющих, например, пишите сценарий/генерируйте, сценарий/консоль и т.д.
Это кажется, что Вы находитесь в системе Unix/Linux и просто вводе matz.rb
на командной строке. При попытке выполнить команду в текущем каталоге, необходимо назвать его как./matz.rb. ". /" говорит этому смотреть в текущем каталоге, а не просто/usr/bin и друзья.
Вы попробовали ShaBang как после непосредственно указать на рубин?
#! /usr/bin/ruby
Затем Вы называете сценарий от командной строки как
./matz.rb
Под системами Unix/Linux точка перед командой для поиска команды в текущем каталоге. При предоставлении пути как/usr/bin/ruby он будет искать в текущем каталоге каталог, названный usr...
Команда без точки / впереди ищется в местоположениях, указанных переменной пути среды.
Команда с / в начале ищется точно от корня после указанного пути.
В Вашем ShaBang Вы хотите указать точный тракт к интерпретатору, таким образом, "/usr/bin/ruby" является корректным. На командной строке, где Вы хотите, чтобы Ваш сценарий был выполнен, необходимо назвать сценарий с "./matz.rb" иначе, удар будет искать команду как/usr/bin/matz.rb, что приводит к errormessage.
Можно использовать строку 'хижины' с также:
#!/usr/bin/ruby
#!/usr/bin/env ruby
Но сценарий должен быть исполняемым файлом (Вы указали, что это), и в Вашем $PATH оболочки.
echo $PATH
Поместите сценарий в один из тех каталогов, или измените Ваш путь, иначе укажите полный путь к нему, например:
export PATH=$PATH:/home/user/bin
или один из них:
./matz.rb
/home/user/bin/matz.rb
Можно также выполнить интерпретатор Ruby, передающий имя файла сценария как аргумент, и это будет выполняться. Это особенно полезно, если у Вас есть другая версия Ruby, установленного в Вашей системе (скажите, для тестирования, как Ruby Enterprise Edition, REE):
/usr/bin/ruby matz.rb
/opt/ree/bin/ruby matz.rb