2012-06-06 82 views
0

到目前爲止,我已經成功使用pgs4a 0.9.4獲取簡單的PyGame應用程序以在Android上運行。我的下一個實驗是看看我是否可以使用PGU中的PyGame GUI小部件;不幸的是,儘管有幾篇論壇文章暗示它應該這樣做,但這似乎並不奏效。有沒有人有過這個成功?PGU(Pygame GUI API)可以與pgs4a(Android的PyGame子集)一起使用嗎?

我還在摸索學習如何捕獲和記錄錯誤信息,所以下面是我試圖展示問題的最小示例。這個應用程序只是顯示一個黑色的屏幕,如果有的話,用白色文本顯示錯誤信息。

請注意,只需導入PGU模塊就足以破壞事物。也就是說,如果我註釋掉「from pgu import gui」,那麼事情就會正常工作。令人討厭的部分是,這個異常似乎沒有被清理乾淨 - 應用程序在啓動後立即退出 - 所以我不確定問題出在哪裏。

import pygame 
msg = 'OK' 
try: 
    from pgu import gui # pass works without error 
except Exception as e: 
    msg = str(e) 

try: 
    import android 
except ImportError: 
    android = None 

FPS = 30 
WIDTH, HEIGHT = 480, 800 

def main(): 
    pygame.init() 
    screen = pygame.display.set_mode((WIDTH, HEIGHT)) 
    if android: 
     android.init() 
     android.map_key(android.KEYCODE_BACK, pygame.K_ESCAPE) 
    font = pygame.font.Font(None, 24) 
    surf = font.render(msg, True, (255, 255, 255)) 
    pygame.time.set_timer(pygame.USEREVENT, 1000/FPS) 
    while True: 
     ev = pygame.event.wait() 
     if android: 
      if android.check_pause(): 
       android.wait_for_resume() 
     if ev.type == pygame.USEREVENT: 
      screen.fill((0, 0, 0, 255)) 
      screen.blit(surf, (10, 400)) 
      pygame.display.flip() 
     elif ev.type == pygame.QUIT or (ev.type == pygame.KEYDOWN and 
             ev.key == pygame.K_ESCAPE): 
      break 
    pygame.quit() 

if __name__ == "__main__": 
    main() 

回答