python - 在显示屏外单击时,pygame 显示屏变得无响应
问题描述
我对使用 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()
在递归函数的开头调用。
推荐阅读
- scala - 将列值列表传递给火花数据框作为新列
- wordpress - Wordpress:覆盖插件包含文件夹中的 php 文件
- python - 降级 Python 版本并出现错误
- reactjs - 在 react-router-dom 中来回浏览器 ^5
- php - 在 Slim 4 中访问中间件中的路由参数
- javascript - 如何获取从过去日期到现在的月份和年份 JavaScript
- javascript - HERE 地图 - 您可以进一步放大查看流量吗?
- node.js - 尽管路径设置正确并已全局安装,但无法识别任何 node.js 包。然而,NPM 没有给出任何错误
- shopify - Shopify 中的测验
- c++ - 如何初始化指向nullptr c ++的动态指针数组