Проблемы с получением pygame для показа чего-либо, кроме пустого экрана на Macos Mojave - программирование
Подтвердить что ты не робот

Проблемы с получением pygame для показа чего-либо, кроме пустого экрана на Macos Mojave

Недавно я купил новый MacBook, и я без конца пытался заставить pygame работать, но пока не удалось. Я становлюсь довольно отчаянным, и я действительно мог бы помочь.

Я установил pygame 1.9.4 и, хотя я не получаю никаких сообщений об ошибках при запуске кода pygame, он не покажет мне ничего, кроме пустого экрана. Я использую следующий код для проверки:

import pygame
pygame.init()

screen = pygame.display.set_mode((800,600))

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            quit()

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

pygame.quit()

На моем старом macbook тестовый код дает мне красный экран, как и ожидалось. Оба MacBook работают под управлением python 2.7.10.

Кто-нибудь знает, что я делаю не так? Я думаю, что я установил pygame точно так же, как и на свой старый MacBook, и единственное отличие, похоже, заключается в операционной системе.

редактировать 1: я пишу сценарий в Sublime Text и запускаю программу в терминале. Скриншот

изменить 2: я снова заработал Pygame, понизив мою операционную систему до MacOS High Sierra.

4b9b3361

Ответ 1

Я попробовал обновить свой старый macbook до ОС Mojave, чтобы посмотреть, перестанет ли работать pygame, и так оно и было!

Я думаю, что Mojave не совместим с pygame (пока).

Спасибо за помощь!

Ответ 2

ПОСЛЕДНИЕ РЕДАКТИРОВАТЬ ОБНОВЛЕНИЕ РАБОТАЮТ:: из MacOS 10.14.1, если вы загрузите официальный установочный пакет macOS x64 Python 3.7.2 со официальной страницы python, а затем установите pip3 и установите pygame, это сработает.

Там проблема с MacOS. Должно быть возможно исправить в SDL.

Проблема с Pygame находится здесь: https://github.com/pygame/pygame/issues/555

Вопрос о домашнем пиве здесь: https://github.com/Homebrew/homebrew-core/issues/33016

Ответ 3

Изменить с помощью рабочего обходного пути: см. Нижнюю часть сообщения


Я получаю ту же проблему на MacBook Pro (Retina display) с python3.7 и MacOs Mojave. Ради простоты я выполнил все свои тесты с помощью того же кода и pygame 1.9.4.

На (двух) компьютерах Windows программа работает и показывает красное окно:

  • python2.7
  • python3.6
  • python3.7

Следовательно, это не похоже на проблему с версией Python, я склоняюсь к проблеме MacOS Mojave.

Мохаве представил "Темный режим", который автоматически подкрашивает окна. Когда темный режим отключен, я получаю пустой экран. Когда он включен, я получаю темный экран. Может ли это быть, что MacOS берет под свой контроль экранный экран и возится с тем, как pygame управляет экраном? Это просто теория, но я не знаю, как ее проверить.


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


Изменить: На данный момент, похоже, работает версия Python от miniconda и с помощью Pygame CogSci.

Ответ 4

Я столкнулся с этой проблемой в следующей среде: Python 3.7, Mojave 10.14.2, Pygame 1.9.4

Я обнаружил, что снижение до Python 3.6 решает проблему

$ brew unlink python
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

Это должно исправить это, если вы получаете проблему циклической зависимости, то вам нужно выполнить:

$ brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

Подробности на https://apple.stackexchange.com/questions/329187/homebrew-rollback-from-python-3-7-to-python-3-6-5-x

Ответ 5

У меня была та же проблема, заставил ее работать путем понижения Python до 3.6.5.

> brew unlink python  brew install --ignore-dependencies
> https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
> brew switch python 3.6.5_1 pip3 install pygame

Если у вас уже установлена Python 3.6.5, я думаю, вы можете просто использовать switch.