2014-12-20 63 views
2

最近我开始讨论Pygame,我开始学习下面的教程。一切都运行良好,直到我达到了一个程序,它看起来像这样:如何克服未加载的Python字体(Pygame)

""" 
A python graphics introduction. 

This simple program draws lines at a 45 degree angle from one side 
of the screen to the other. 
""" 

# Import a library of functions called 'pygame' 
import pygame 
from pygame import font 

# Initialize the game engine 
pygame.init() 

# Set the height and width of the screen 
size = (400, 500) 
screen = pygame.display.set_mode(size) 

pygame.display.set_caption("Intro to Graphics") 

#Loop until the user clicks the close button. 
done = False 
clock = pygame.time.Clock() 

# Loop as long as done == False 
while not done: 

    for event in pygame.event.get(): # User did something 
     if event.type == pygame.QUIT: # If user clicked close 
      done = True # Flag that we are done so we exit this loop 

    # All drawing code happens after the for loop and but 
    # inside the main while not done loop. 

    # Clear the screen and set the screen background 
    screen.fill(WHITE) 

    # Select the font to use, size, bold, italics 
    font = pygame.font.SysFont('Calibri', 25, True, False) 

    # Render the text. "True" means anti-aliased text. 
    # Black is the color. This creates an image of the 
    # letters, but does not put it on the screen 
    text = font.render("My text", True, BLACK) 

    # Put the image of the text on the screen at 250x250 
    screen.blit(text, [250, 250]) 

    # Go ahead and update the screen with what we've drawn. 
    # This MUST happen after all the other drawing commands. 
    pygame.display.flip() 

    # This limits the while loop to a max of 60 times per second. 
    # Leave this out and we will use all CPU we can. 
    clock.tick(60) 


# Be IDLE friendly 
pygame.quit() 

当我跑在字体= pygame.font.SysFont得到一个错误(“宋体”,25,真,假)那看起来像:

RuntimeWarning: use font: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/font.so, 2): Library not loaded: /usr/X11/lib/libfreetype.6.dylib 
    Referenced from: /Library/Frameworks/SDL_ttf.framework/Versions/A/SDL_ttf 
    Reason: image not found 
(ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/font.so, 2): Library not loaded: /usr/X11/lib/libfreetype.6.dylib 
    Referenced from: /Library/Frameworks/SDL_ttf.framework/Versions/A/SDL_ttf 
    Reason: image not found) 
    pygame.font.init() 
Traceback (most recent call last): 
    File "IntroGraphics.py", line 15, in <module> 
    pygame.font.init() 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/__init__.py", line 70, in __getattr__ 
    raise NotImplementedError(MissingPygameModule) 
NotImplementedError: font module not available 
(ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/font.so, 2): Library not loaded: /usr/X11/lib/libfreetype.6.dylib 
    Referenced from: /Library/Frameworks/SDL_ttf.framework/Versions/A/SDL_ttf 
    Reason: image not found) 

我在这里看着一个答案,而只有等岗位约涉及32位Pygame的64位的Python。我确定它们都在运行32位(尽管它是一个64位的机器,Pygame只有32位)。我正在运行Python 2.7.9新安装

其他地方说这是SDL的问题,但我对SDL并不熟悉,我不知道该怎么做。

有没有其他人有这个问题?

+0

您是否安装了sdl_ttf? http://www.libsdl.org/projects/SDL_ttf/ – EvergreenTree

+0

事实上,当你自制pygame它随之而来。我甚至安装了SDL2。问题是它说:“引用:/Library/Frameworks/SDL_ttf.framework/Verisons/A/SDL_ttf找不到”,但我可以手动去那里找到它。 – user3791725

回答

0

可用于pygame的字体在不同的计算机上可能会有所不同。我建议你看看你想使用的字体是否包含在你的电脑中。你可以看到所有可用的字体,使用此命令:

pygame.font.get_default_font() 
# returnes the name of the default font 

您可以使用此代码来检查您的字体:

pygame.font.get_fonts() 
# returns a list of available fonts 

您也可以使用这个命令得到了系统的默认堡

if 'Calibri' in pygame.font.get_fonts(): 
    font_name = 'Calibri' 
else: 
    font_name = pygame.font.get_default_font()