2010-07-21 7 views
3

파이 게임으로 작성중인 게임에 GUI 요소 (버튼이있는 대화 상자)를 추가하려고합니다. 나는 적당한 GUI 툴킷을 찾아 보았고 pgu으로 끝났다. 어쨌든, 나는 대화 상자를 팝업 시키려고 노력하고 있는데, 대화 상자는 닫히지 않습니다. 제가 보는파이 게임에서 팝업 창 만들기


import pygame, sys 
from pgu import gui 

screen = None 
WIDTH = 640 
HEIGHT = 480 

def init_pygame(): 
    global screen 
    pygame.display.init() 
    screen = pygame.display.set_mode((WIDTH, HEIGHT), pygame.DOUBLEBUF) 
    pygame.display.set_caption('Testing PGU') 

class SimpleDialog(gui.Dialog): 
    def __init__(self): 
     title = gui.Label("Spam") 
     main = gui.Container(width=20, height=20) 
     # I patched PGU to use new style classes. 
     super(SimpleDialog, self).__init__(title, main, width=40, height=40) 

    def close(self, *args, **kwargs): 
     print "closing" 
     return super(SimpleDialog, self).close(*args, **kwargs) 

def run(): 
    init_pygame() 
    app = gui.App() 

    dialog = SimpleDialog() 
    app.init(dialog) 

    app.paint(screen) 
    pygame.display.flip() 
    while True: 
     app.paint(screen) 
     pygame.display.flip() 
     for event in pygame.event.get(): 
      if event.type == pygame.MOUSEBUTTONDOWN: 
       if event.button == 3: # right mouse button 
        print "opening" 
        dialog.open() 
       else: 
        app.event(event) 
      elif event.type == pygame.QUIT: 
       sys.exit() 
      else: 
       app.event(event) 

if __name__=='__main__': 
    run() 

동작 :

여기에 그냥 걱정 동작을 보여줍니다 내 코드의 단순화 된 버전의 창이 대화 상자의 전체 화면 버전으로 열립니다. 마우스 오른쪽 버튼을 클릭하면 내 콘솔에 "열림"이 인쇄되고 작은 빨간색 원을 클릭하면 "닫는 중"이 인쇄됩니다. 대화 상자가 작은 배경 대신 전체 배경 화면을 사용하고있는 것처럼 보입니다.

내가보기를 원하는 동작 : 큰 검은 색 화면이 나타나고 (오른쪽 그림을 그릴 것입니다.) 오른쪽 버튼을 클릭하면 작은 창이 열립니다. 닫기 버튼을 클릭했을 때 창이 사라집니다.

나는 그것이 데스크톱을 사용하지 않는다는 사실과 관련이 있다고 생각하지만, 전체 게임이 GUI 안에 존재하기를 원하지 않습니다.

이제 명시해야 할 질문 : 내가보기 싫은 행동에서 얻고 자하는 코드에서 어떻게 수정합니까? 누군가가 pgu보다 최근에 유지 보수 한 것을 알고 있다면 다른 GUI 라이브러리를 사용할 수 있습니다.

답변

3

누구도이 작업을 원할 경우 작동하는 것을 발견했습니다. 빈 컨테이너를 만들고 app.init()을 호출하십시오.

empty = gui.Container(width=WIDTH, height=HEIGHT) 
gui.init(empty)