pygame. error: font not initialized 의 해결 및 init () 는 도대체 무엇 을 했 습 니까?

5218 단어 pygamepython
환경 파 이 썬 3.6.8pygame 1.9.4
잘못된 소스 코드 를 붙 입 니 다.
import pygame
my_font = pygame.font.SysFont('arial', 16)
my_font = pygame.font.Font('my_font.ttf', 16)

오류 보고 내용:
Traceback (most recent call last):
  File "C:\Users\HaoziHuang\Desktop\pygame\4\4.py", line 6, in 
    my_font = pygame.font.SysFont('arial', 16)
  File "D:\rjyj\Python\python3.6.8\lib\site-packages\pygame\sysfont.py", line 320, in SysFont
    return constructor(fontname, size, set_bold, set_italic)
  File "D:\rjyj\Python\python3.6.8\lib\site-packages\pygame\sysfont.py", line 243, in font_constructor
    font = pygame.font.Font(fontpath, size)
pygame.error: font not initialized

어떤 글꼴 문 구 를 먼저 실행 하 더 라 도 오류 가 발생 할 수 있 습 니 다. 이 오류 가 발생 했 을 때 프로그램 시작 부분 에 pygame 의 초기 화 문 pygame.init() 이 부족 한 지 확인 해 야 합 니 다. pygame.init() 도대체 무엇 을 초기 화 하 는 것 입 니까?이 문 제 는 잘 물 었 다!
현대 마법
너 는 도대체 (init) 몇 명의 좋 은 여동생 (모) 여동생 (덩어리) 이 있 니?
우리 가 init () 에 있 을 때 우 리 는 무엇 을 하고 있 었 습 니까?init 이 단 어 는 우리 가 python 으로 대상 을 대상 으로 개발 할 때 도망 갈 수 없다.python 을 이해 하 는 __init__() 은 사실 이곳 init() 과 작용 이 많 지 않다.하 는 일 은 다초기 화.그 가 무엇 을 하고 있 는 지 에 대해 나의 설명 은 이렇다.
python 에 특별한 '공구 꾸러미 (모듈)' 가 있다 는 것 을 알 고 있 습 니 다.pygame 됐어 요.우리 가 그것 으로 우리 의 생각 을 완성 하기 전에 컴퓨터 라 는 강박 증 은 우리 가 이 공구 꾸러미 가 완전 하고 정상적으로 우리 에 게 도움 을 줄 수 있 는 지 를 한 번 검사 해 야 한다.이 검사 의 동작 은 바로pygame.init()
그럼 init () 는 실제로 어떤 것들 을 검 사 했 나 요?
이것 도 사실 실험 하기 어렵 지 않다.셸 에서 직접 이 함 수 를 실 행 했 습 니 다.
>>> import pygame
>>> pygame.init()
(6, 0)

그래서 인지 그 가 나 에 게 원 조 (6,0) 를 주 었 는데 나 도 이 6 과 0 이 각각 무슨 뜻 을 대표 하 는 지 이해 가 되 지 않 는 다.그래서 pygame 공식 문 서 를 찾 아 봤 습 니 다.
initialize all imported pygame modules
init() -> (numpass, numfail)
Initialize all imported pygame modules. No exceptions will be raised if a module fails, but the total number if successful and failed inits will be returned as a tuple. You can always initialize individual modules manually, but pygame.init() is a convenient way to get everything started. The init() functions for individual modules will raise exceptions when they fail.
You may want to initialize the different modules separately to speed up your program or to not use things your game does not.
It is safe to call this init() more than once: repeated calls will have no effect. This is true even if you have pygame.quit() all the modules.
가 져 온 pygame 모듈 을 초기 화 합 니 다.모듈 이 실패 하면 이상 이 발생 하지 않 지만 성공 하고 실패 한 총 수 는 원 그룹 으로 되 돌아 갑 니 다.할 수 있다,...
단일 모듈 을 수시로 수 동 으로 초기 화 하지만 pygame. init () 가 져 온 모든 pygame 모듈 을 초기 화 하 는 것 은 모든 내용 을 시작 하 는 편리 한 방법 입 니 다.각 모듈 의 init () 함 수 는 실패 할 때 이상 을 일 으 킬 수 있 습 니 다.
프로그램 을 가속 화하 거나 게임 에 없 는 것 을 사용 하지 않 기 위해 다른 모듈 을 단독으로 초기 화 하 기 를 원할 수도 있 습 니 다.
init() 를 한 번 만 호출 하 는 것 이 안전 합 니 다. 중복 호출 은 소 용이 없습니다.설령 네가 pygame.quit() 모든 모듈 을 가지 고 있다 하 더 라 도 마찬가지다.
init () 에 대한 의외 의 실험
나 는 이전에 pygame.init() 이 함수 가 도대체 init 가 어떤 모듈 을 만 들 었 는 지 깊이 연구 한 적 이 없다. 단지 실천 과정 에서 오디 오 재생 과 문자 글꼴 을 만 들 때 init 가 없 으 면 오 류 를 보고 할 수 있다 는 것 을 알 았 을 뿐이다.
오늘 나 는 나의 새로운 컴퓨터 환경 을 설치 할 때 컴퓨터 의 모델 을 모 르 기 때문에 특별히 컴퓨터 에 대응 하 는 구동 을 검색 하고 설치 하지 않 았 다.결 과 는 python 을 설치 한 후 pygame (wheel 도 설치) 을 설치 한 후 일반적인 테스트 함수 pygame.init() 를 실행 하여 되 돌아 오 는 숫자 는 (5, 1) 입 니 다.
문 제 를 제거 하 는 방법 은 이미 알 고 있 는 서브 모듈 을 모두 먼저 실행 하 는 것 이다.조사 결과 pygame 에서 사 운 드 카드 구동 을 호출 할 수 없 음 을 발견 하 였 습 니 다.남 은 일 은 많이 쉬 워 졌 습 니 다. 사 운 드 카드 드라이버 를 다시 설치 하고 다시 시작 하면 정상 init 가 됩 니 다.
그러나 이 과정 에서 나 는 이전 보다 더욱 실제 에 가 까 운 결론 을 얻 을 수 있다.init() 컴퓨터 에 필요 한 하드웨어 호출 인터페이스, 기초 기능 에 문제 가 있 는 지 확인 하 는 것 이다.만약 있다 면, 그 는 프로그램 이 실행 되 기 전에 너 에 게 피드백 을 해서, 네가 조사 하고 회피 하 는 것 을 편리 하 게 할 것 이다.
이렇게 많아
>>> import pygame
>>> pygame.init()
(6, 0)

>>> pygame.display.init()
>>> pygame.font.init()
>>> pygame.joystick.init()
>>> pygame.mixer.init()

>>> pygame.scrap.init()
Traceback (most recent call last):
  File "", line 1, in 
pygame.error: No display mode is set

>>> pygame.freetype.init()
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: module 'pygame' has no attribute 'freetype'
>>> pygame.midi.init()
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: module 'pygame' has no attribute 'midi'
>>> pygame.cdrom.init()

나 는 pygame 홈 페이지 에 있 는 doc 에서 소개 한 init 가 있 는 모든 하위 모듈 을 한 번 실행 했다.
그 중 pygame.init()midi 이 두 모듈 은 이미 없어졌다.freetype 초기 화 에 실패 한 것 은 창 이 없 기 때 문 입 니 다.이렇게 되면 사실상 5 개의 모듈 이 초기 화 되 었 다.그러나 scrap 은 창 이 없 는 상태 에서 잘못 보고 할 수 있 습 니 다. 하나 라 고 할 수 있 습 니까? scrap뒤에 문서 와 원본 을 자세히 봐 야 겠 죠?
That's all!이 사내 의 나 눔 에 다시 한 번 감 사 드 립 니 다!
공식 문 서 를 첨부 하 다

좋은 웹페이지 즐겨찾기