簡體   English   中英

單擊顯示屏外時,pygame 顯示屏變得無響應

[英]pygame display becomes unresponsive when clicking outside of the display

我對使用 pygame 庫和一般圖形很陌生。

我有一個遞歸函數,它通過回溯來解決數獨難題。 我正在嘗試使用 pygame 來可視化這個過程。

每次遞歸函數嘗試一個新的有效數字時,它都會進行以下調用:

self.engine.draw_font(str(num), self.engine.get_position(i, j))

它調用的函數將該數字渲染到一個新的表面上:

def draw_font(self, string, position, bold=False):
    font = pg.font.SysFont(self.font, 25, bold=bold)
    textSurface = font.render(string, False, self.colors['text'])
    self.update(textSurface, position)

然后我將該表面 blit 到顯示器上,並更新顯示器的那部分:

def update(self, surface, position):
    rect = pg.Rect(position[0], position[1], 25, 25)
    color = self.display.get_at(position)
    self.display.fill(color, rect)
    self.display.blit(surface, position)
    pg.display.update(rect)

這個過程運行良好,屏幕上的數字正如我所期望的那樣更新。 但是,如果我嘗試與顯示器進行交互,例如:單擊顯示器外部、嘗試移動顯示器,或者甚至只是最小化顯示器,那么 pygame 窗口就會凍結。

我需要做些什么不同的事情才能使我的顯示器更易於使用?

您必須處理遞歸函數中的事件。 分別參見pygame.event.get() pygame.event.pump()

對於游戲的每一幀,您都需要對事件隊列進行某種調用。 這確保您的程序可以在內部與操作系統的其余部分進行交互。

在遞歸函數的pygame.event.pump()調用pygame.event.pump()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM