2014-05-14 1 views
0

필자가 발견 한 모든 pySLD2 예제에서 코드 끝 부분에 루프가 닫힐 때까지 열린 상태로 유지됩니다. 예 :pySDL2 엔드 루프가없는 디스플레이

#!/usr/bin/env python 
""" 
The code is placed into public domain 
by anatoly techtonik <[email protected]> 
""" 
import sdl2 
import sdl2.ext as lib 

lib.init() 

window = lib.Window('', size=(300, 100)) 
window.show() 

renderer = lib.Renderer(window) 
renderer.draw_point([10,10], lib.Color(255,255,255)) 
renderer.present() 

####Specifically this loop#### 
running = True 
while running: 
    for e in lib.get_events(): 
    if e.type == sdl2.SDL_QUIT: 
     running = False 
     break 
    if e.type == sdl2.SDL_KEYDOWN: 
     if e.key.keysym.sym == sdl2.SDLK_ESCAPE: 
     running = False 
     break 

내가 본 모든 이벤트 핸들러가 차단되었습니다. 표준 SDL에서 본 것처럼 처음에이라는 창에서 초기화 및 업데이트 함수를 호출하는 방법이 있습니까? 필자는이 프로젝트를 독립적으로 호출 할 수있는 외부 라이브러리로 작성했습니다.

아이디어가 있으십니까? 감사!

편집 : 표준 SDL에서이를 수행하는 방법에 대한 요청에 따라 this이 작동합니다. init 함수를 호출하여 화면을 설정하면 닫을 때까지 그대로 유지됩니다.

+0

''표준 SDL에서 본 것처럼! ' "무엇을 의미합니까? 우리가 말하는 실제 코드를 보여줄 수 있습니까? – olevegard

+0

위의 편집보기, Olevegard. – sweyn

답변

0

예제를 잘못 해석하고 있습니다. 이것은 메인 루프에 설정되는 추가 후크 (screen.c)입니다.

SDL은 주 루프 접근 방식을 사용하여 이벤트를 처리하고 창 표시를 업데이트합니다. 예, 해결 방법이 있습니다. 고유 한 창을 생성하고 어떤 방식 으로든 열어서 SDL_SysWM * 기능을 통해 창 핸들을 가져오고 창 표시 버퍼를 업데이트하십시오.

그러나 이는 글루 코드가 포함되어 있으며 사용자가 직접 처리해야합니다.

관련 문제