2014-01-23 53 views
0

我正確安裝了所有依賴項(SDL2,SDL2_TTF,pysdl2)。 我試圖提供只是字體的文件名,我試圖硬編碼的完整路徑。該字體與python文件位於同一個目錄中。使用pysdl2 Python綁定調用sdlttf.TTF_OpenFont()時出現類型錯誤

import sys 
try: 
    from sdl2 import * 
    import sdl2.ext as sdl2ext 
    import sdl2.sdlttf as sdlttf 
except ImportError: 
    import traceback 
    traceback.print_exc() 
    sys.exit(1) 


def run(): 
    sdl2ext.init() 
    sdlttf.TTF_Init() 
    RESOURCES = sdl2ext.Resources(__file__, "") 
    # print(RESOURCES.get_path("arial.ttf")) 
    font = sdlttf.TTF_OpenFont(RESOURCES.get_path("arial.ttf"), 24) 
    window = sdl2ext.Window("SDL_TTF test", size=(800, 600)) 
    message = sdlttf.TTF_RenderText_Solid(font, "Hello World", (255, 255, 255)) 
    window.show() 
    running = True 
    while running: 
     events = sdl2ext.get_events() 
     for event in events: 
      if event.type == SDL_QUIT: 
       running = False 
       break 
     window.refresh() 
    return 0 

if __name__ == "__main__": 
    sys.exit(run()) 

返回:

Traceback (most recent call last): 
    File "sdl2_test.py", line 32, in <module> 
    sys.exit(run()) 
    File "sdl2_test.py", line 17, in run 
    font = sdlttf.TTF_OpenFont(RESOURCES.get_path("arial.ttf"), 24) 
ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type 

回答

1

我知道了。由於我使用的是Python 3,因爲用於在Python 3中表示字符串的標準類型,所以類型不正確。我通過使用str.encode()來解決此問題()

相關問題