Pygame установлен правильно, но почему он ничего не отображает? - PullRequest
0 голосов
/ 14 апреля 2020

Человеческие существа!

Я недавно установил Pygame, следуя замечательному руководству Брайсона Пейна, которое вы можете найти здесь . Я установил все следующие зависимости и программы в соответствии с порядком в инструкциях.

  1. Установлено XQuartz
  2. Homebrew уже установлен (это был второй шаг).
  3. Установлена ​​версия python 3 из homebrew, особенно для использования в пигмеях
  4. В терминале выполнили следующие команды: brew install mercurial, brew install sdl sdl_image sdl_mixer sdl_ttf portmidi, brew tap homebrew / headonly (эта команда завершилась неудачно, но pygame все еще позволяет мне скачать ее! I прочитайте, что если у меня не было этого, оно не должно позволить мне скачать, поэтому я просто удалил его. Если вы думаете, что это проблема, скажите мне!), и, наконец, brew install smpeg
  5. Затем , sudo pip3 установить hg + http://bitbucket.org/pygame/pygame. Это не сработало при первом запуске, поэтому я установил его через «pip3 install pygame», и это сработало. Затем я снова попробовал оригинальную команду, и в этот раз она все-таки загрузилась.

Кроме того, впоследствии я установил pgzero через терминал, а затем в pycharm через интерпретатор проекта. То же самое было сделано с обычной пигмеей. И произошло нечто странное. IDLE, который предположительно был включен в pygame (python 3.7), фактически не работал. Затем я попытался использовать другой IDLE, который у меня был раньше, 3.8.2, и это сработало.

В первой попытке, которая была некоторое время go (около 2 недель), я действительно этого не сделал много думаю об установке, так как она была загружена правильно. Затем, когда я попытался запустить свою простую программу на PyCharm и IDLE, ни одна из них не сработала! Код на IDLE не отображал сообщение об ошибке ... IDLE просто запустил код, но ничего не произошло, так как python запустил программу: но через пару минут оказалось, что код ничего не делает. Появилось следующее окно, в котором выполняются программы.

Окно, в котором выполняются программы

Но PyCharm, выполняющий тот же код, отображает другое сообщение. Это происходит следующим образом (обратите внимание, что в месте над файлом .py есть фотография, которую нужно было использовать).

См. Изображение здесь

В новом окне не отображался запрос >>> даже после того, как он был запущен в течение нескольких минут. Python Пусковая установка подпрыгивала на док-станции, как будто загрузка, пока она не прекратилась через 3 минуты.

python пусковая установка подпрыгивает

Итак, чтобы уточнить, код запускался без ошибок, но не отображался, даже в основном окне c! Это случилось с различными небольшими программами. Ниже приведены некоторые примеры.

import pygame
background_colour = (255,255,255)
(width, height) = (300, 200)
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('Tutorial 1')
screen.fill(background_colour)
pygame.display.flip()
running = True
while running:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      running = False

Я также запустил несколько более сложных программ, подобных тем, что описаны в книге «Миссия Python». Вы можете скачать файлы игры здесь .

Еще одна небольшая программа, которую я запустил, была:

import pygame
pygame.init()
img =pygame.image.load('astronaut.png')
display = pygame.display.set_mode((400, 400))
display.blit(img, [0, 0])
pygame.display.update()

Последняя была ...

import pygame as pg
import sys

pg.init()
screen = pg.display.set_mode((800,600))
done = False
while not done:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            done = True

    pg.display.update()
pg.quit()
sys.exit()

После этих сбоев (программа не работала) я удалил и снова установил pygame и pgzero (как в IDLE, так и в PyCharm). 3 раза (никто из них не работал). После каждой установки я перезагружал компьютер. Черт! Я даже пытался установить различными способами (например, sudo pip3 install pygame, pip3 install pygame, sudo pip install pygame и, наконец, sudo pip3 install pygame). Когда я попытался установить его с помощью pip3, он установил pygame, и когда я попытался использовать только pip, он также установил pygame (это было сделано одна команда за другой).

Я прошу помощи, потому что все мои разработки программного обеспечения / IDE с поддержкой Pygame (в конце концов, они не показывают никаких сообщений об ошибках). Так что же это может быть? Код скопирован из документации Pygame, в которой предлагается использовать некоторые из этих фрагментов кода, чтобы доказать, что Pygame работает правильно. На самом деле, я в отчаянии, потому что моя цель - заставить работать пигмея.

Неправильно ли я использую изображения? Но я храню файлы в том же каталоге, что и изображения (в той же папке). Я называю свои изображения в соответствии с моей книгой (это применимо только к более длинной программе, найденной в файлах Миссии Python, которые были связаны ранее)


Помните, главная проблема заключается в том, что включена функция pygame но не отображается. Предыдущий текст - это лишь некоторые из вещей, которые я сделал, чтобы решить эту проблему.


Это команда brew tap homebrew / headonly, которая не работала? Что еще я могу сделать, чтобы заменить эту команду и заставить работать pygame?

1 Ответ

0 голосов
/ 14 апреля 2020

Причин может быть много, поэтому я остановлюсь на одной из них.


Ваш код завершается немедленно.

При запуске следующего кода (или с аналогичной структурой) коды),

import pygame
pygame.init()
img =pygame.image.load('astronaut.png')
display = pygame.display.set_mode((400, 400))
display.blit(img, [0, 0])
pygame.display.update()

код будет немедленно завершен, поэтому вы никогда не заметите, что игра действительно запущена. Он будет работать только доли секунды, прежде чем закончится. У вас должна быть какая-то форма l oop, чтобы она оставалась открытой. Кажется, это проблема большинства ваших примеров (например, когда вы запускали IDLE).

Я бы посоветовал вам попробовать этот код

import pygame
pygame.init()

screen  = pygame.display.set_mode((800, 600))
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((255, 0, 0))
    pygame.display.update()

Вы должны увидеть красный окно.


Ваши изображения находятся на неверном пути или имеют неправильные имена.

Согласно одной из ваших фотографий, вы не можете загрузить изображение. Это означает, что программа работает, но не может найти изображение rescue_ship.png. При запуске из IDE все файлы могут быть доступны по относительному пути относительно проекта root.

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


Вы ошибаетесь python версия.

Убедитесь, что вы не используете Python 3.8 случайно. Я не думаю, что Pygame поддерживает это, и я видел много других вопросов, которые имеют проблемы с его использованием. Это может быть трудно заметить, так как все будет работать нормально, пока вдруг это не сработает.

Кроме того, убедитесь, что вы используете Python версию с установленной Pygame. Например, у меня есть Python 3.5, 3.6 и 3.8, но только в Python 3.5 установлена ​​pygame. Поэтому, если я запускаю свои скрипты pygame с Python 3.6, он не будет работать (он будет выдавать сообщение с «Нет модуля с именем pygame» ).

...