2014-01-23 12 views
0

모든 종속성이 올바르게 설치되었습니다 (SDL2, SDL2_TTF, pysdl2). 글꼴의 파일 이름 만 입력하려고했는데 전체 경로를 하드 코드했습니다. 폰트는 python 파일과 같은 디렉토리에 있습니다.pysdl2 파이썬 바인딩을 사용하여 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

나는 그것을 얻었다. 파이썬 3을 사용하고 있기 때문에 파이썬 3에서 문자열을 표현하기 위해 사용되는 표준 타입 때문에 타입이 잘못되었습니다. str.encode()를 사용하여 그것을 해결했습니다