Python 无法在pygame中的屏幕上呈现文本
我正在尝试使用pygame构建一个带有GUI的数独解算器。 我用白色填充屏幕,并为网格绘制矩形,然后翻转屏幕进行更新。 现在我使用board数组绘制网格值,使用以下函数Python 无法在pygame中的屏幕上呈现文本,python,user-interface,pygame,python-3.7,backtracking,Python,User Interface,Pygame,Python 3.7,Backtracking,我正在尝试使用pygame构建一个带有GUI的数独解算器。 我用白色填充屏幕,并为网格绘制矩形,然后翻转屏幕进行更新。 现在我使用board数组绘制网格值,使用以下函数 def on_渲染(自、板): font=pygame.font.font(pygame.font.match_font('nintendoext003'),1) screen=pygame.display.get_surface() 屏幕填充((255、255、255)) 对于范围(9)内的高度: 对于范围(9)内的宽度: r
def on_渲染(自、板):
font=pygame.font.font(pygame.font.match_font('nintendoext003'),1)
screen=pygame.display.get_surface()
屏幕填充((255、255、255))
对于范围(9)内的高度:
对于范围(9)内的宽度:
rect=pygame.rect(宽*70,高*70,68,68)
pygame.draw.rect(屏幕,(0,0,0),rect)
pygame.display.flip()
screen=pygame.display.get_surface()
对于范围(9)内的高度:
对于范围(9)内的宽度:
如果不是板[高度][宽度]==0:
value=font.render(str(board[height][width]),True,(255,255,255))
valrect=value.get_rect()
垂直中心=(宽度*70+34,高度*70+34)
screen.blit(值,valrect)
网格绘制正确,非零元素也被正确读取,但文本根本不会呈现。
由于渲染函数也将在程序求解网格时绘制已求解的网格,因此我希望它能够更新为blit to screen的值。
我做错了什么?的构造函数的最后一个参数是字体的大小(以像素为单位)。因此1表示1像素。
此外,您必须在绘制文本后更新显示。注意,在绘制整个场景后,只需更新一次显示即可: 使用不同的字体大小(例如40)并更新渲染上
末尾的显示:
渲染板上的def(代码):
font=pygame.font.font(pygame.font.match_font('nintendoext003'),40)
screen=pygame.display.get_surface()
#清晰显示
屏幕填充((255、255、255))
#绘制网格
对于范围(9)内的高度:
对于范围(9)内的宽度:
rect=pygame.rect(宽*70,高*70,68,68)
pygame.draw.rect(屏幕,(0,0,0),rect)
#绘制文本
对于范围(9)内的高度:
对于范围(9)内的宽度:
如果不是板[高度][宽度]==0:
value=font.render(str(board[height][width]),True,(255,255,255))
valrect=value.get_rect()
垂直中心=(宽度*70+34,高度*70+34)
screen.blit(值,valrect)
#更新显示
pygame.display.flip()
奇怪的是,我发誓我在绘制值后尝试过翻转,但没有效果,大多数示例也没有翻转。我从字体大小100开始,一步一步地降低。。。。无论如何谢谢你@Blaine你应该每帧只翻转一次,所以如果这只是一个要绘制的辅助函数,而你在别处调用了pygame.display.flip()
,那么翻转是不必要的。@TedKleinBergman当然,但我在回答中提到了这一点。